/ / SQLite बाइंड इन्सर्ट स्टेटमेंट थ्रोिंग एरर विथ यूनीक की - एंड्राइड, साइक्लाइट

SQLite बाध्य डालने का बयान अद्वितीय कुंजी के साथ त्रुटि फेंकना - एंड्रॉइड, एसक्लाइट

मैं Android SQLite के लिए एक बैच डालने का उपयोग कर डेटाबेस में एक सम्मिलित करने के लिए निम्नलिखित कोड का उपयोग कर रहा हूं

                  String sql = "INSERT INTO "+ SQL_DATABASE_GLOBALS.TEMPSORT_TABLE +" VALUES (?,?,?,?,?,?,?,?,?,?,?);";
Log.d("Line", "1");
SQLiteStatement statement = SQL_DATABASE_GLOBALS.SQL_DATABASE.compileStatement(sql);
Log.d("Line", "2");

SQL_DATABASE_GLOBALS.SQL_DATABASE.beginTransaction();
Log.d("Line", "3");

statement.clearBindings();
statement.bindLong(1, 0);
statement.bindString(2, "Site");
statement.bindString(3, this.SearchLocation);
statement.bindString(4, TitleElement);
statement.bindString(5, NewURL);
statement.bindString(6, ImageHREFElement);
statement.bindString(7, PriceElement);
statement.bindString(8, "WebSIteDescription"); //Description
statement.bindString(9, LocationElement);
statement.bindString(10, TrueDateTime);
statement.bindString(11, TrueDateTime);
Log.d("Line", "4");

long result = statement.executeInsert();
Log.d("Results", "SQL Result" + result);
SQL_DATABASE_GLOBALS.SQL_DATABASE.setTransactionSuccessful();
SQL_DATABASE_GLOBALS.SQL_DATABASE.endTransaction();

अब इन्सर्ट स्वयं काम करता है, लेकिन समस्या यह है कि मैं डेटाबेस में 1 आइटम है वास्तव में एक अद्वितीय ऑटो वेतन वृद्धि कॉलम है। इसलिए मुझे त्रुटि मिल रही है ...

"प्राथमिक कुंजी अद्वितीय होनी चाहिए"

मैं सामान्य रूप से इससे कैसे निपटूंगा? क्या मुझे वास्तव में बैठना होगा और वास्तविक प्रविष्टि कथन को पूरी तरह से बनाने की बजाय केवल उस विधि का उपयोग करना होगा जो मैंने किया था?

नहीं, मैं निर्माण किए गए मानों का उपयोग नहीं करना चाहता, मैं इस प्रकार के आवेषण के साथ रहना चाहता हूं।

उत्तर:

उत्तर № 1 के लिए 1

आप "0 को यूनीक कॉलम से बाइंड करते हैं। ऑटोनोक्रिम मैकेनिज्म को किक करने के लिए, वहाँ एक नल बांधें।

परिवर्तन

statement.bindLong(1, 0);

सेवा मेरे

statement.bindNull(1);