मैं 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);