दिलचस्प पोस्ट
एक खाली JQuery ऑब्जेक्ट प्राप्त करना ScrollView के अंदर रीसायकलदृश्य देखें काम नहीं कर रहा है कमजोर संदर्भ लाभ गैर कैप्चरिंग समूह क्या है? प्रश्न चिह्न क्या एक बृहदान्त्र के बाद (? :) मतलब है? कैसे बताने के लिए। () प्रतीक्षा करने के लिए? एपलेट विधि जावास्क्रिप्ट से बुला रही है प्रत्येक दिनांक के लिए विभिन्न स्वरूपों का उपयोग करते हुए एक ही कक्षा में कई दिनांकटाइम गुणों को क्रमबद्ध करना जेटी को सत्र रद्द करने के बाद बुनियादी प्रमाणीकरण के साथ क्रेडेंशियल्स के बारे में पूछने के लिए कैसे दबाव डालना है? जन्मदिन प्राप्त करने के लिए Google API का दायरा कैसे निर्दिष्ट करें बाहरी जार पर "दल्विक प्रारूप में रूपांतरण त्रुटि 1 के साथ विफल" ऊंचाई: 100% काम नहीं कर रहा है रैगेक्स के साथ एक स्ट्रिंग में कोई संख्या बढ़ाएं सी + 11 एटॉमिक्स और ओपनएमपी मिश्रण करना C + स्ट्रिंग को C ++ पास करें और C ++ नतीजे (स्ट्रिंग, char * .. जो भी हो) को C # अच्छा या बुरे – अलग-अलग प्रक्रियाओं के बीच सेटपेरिंट () Win32 एपीआई

क्या एंड्रॉइड डेटाबेस में टेक्स्ट फ़ील्ड पर प्राथमिक कुंजी लागू करना संभव है

मैंने एक सरल तालिका बनाई है जिसमें व्यक्तियों का नाम और ईमेल आईडी है जब मैं इस तरह से क्वेरी बना रहा हूं:

"create table contacts (name text not null, email text primary key not null);"

लेकिन यह काम नहीं कर रहा है चलते समय मुझे कोई अपवाद या त्रुटि नहीं मिल रही है और न ही प्राथमिक कुंजी काम कर रहा है। SQLite ब्राउज़र का उपयोग करते हुए तालिका ब्राउज़ करते हुए मैंने देखा कि केवल चार डेटा प्रकार हैं: यहां छवि विवरण दर्ज करें

क्या यह केवल पूर्णांक पर प्राथमिक कुंजी को लागू करना संभव है? यदि मैं पाठ क्षेत्रों पर प्राथमिक कुंजी चाहता हूँ तो क्या मामला है धन्यवाद। यह वह कोड है जिसका मैंने प्रयोग किया था:

public class DBAdapter {

 public static final String KEY_ROWID = "_id"; public static final String KEY_NAME = "name"; public static final String KEY_EMAIL = "email"; private static final String TAG = "DBAdapter"; private static final String DATABASE_NAME = "MyDB"; private static final String DATABASE_TABLE = "contacts"; private static final int DATABASE_VERSION = 2; private static final String DATABASE_CREATE = "create table contacts (_id integer primary key autoincrement, " + "name text not null, email text not null);"; private final Context context; private DatabaseHelper DBHelper; private SQLiteDatabase db; public DBAdapter(Context ctx) { this.context = ctx; DBHelper = new DatabaseHelper(context); } private static class DatabaseHelper extends SQLiteOpenHelper { DatabaseHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db) { try { db.execSQL(DATABASE_CREATE); } catch (SQLException e) { e.printStackTrace(); } } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { Log.w(TAG, "Upgrading database from version " + oldVersion + " to " + newVersion + ", which will destroy all old data"); db.execSQL("DROP TABLE IF EXISTS contacts"); onCreate(db); } } //---opens the database--- public DBAdapter open() throws SQLException { db = DBHelper.getWritableDatabase(); return this; } //---closes the database--- public void close() { DBHelper.close(); } //---insert a contact into the database--- public long insertContact(String name, String email) { ContentValues initialValues = new ContentValues(); initialValues.put(KEY_NAME, name); initialValues.put(KEY_EMAIL, email); return db.insert(DATABASE_TABLE, null, initialValues); } //---deletes a particular contact--- public boolean deleteContact(long rowId) { return db.delete(DATABASE_TABLE, KEY_ROWID + "=" + rowId, null) > 0; } //---retrieves all the contacts--- public Cursor getAllContacts() { return db.query(DATABASE_TABLE, new String[] {KEY_ROWID, KEY_NAME, KEY_EMAIL}, null, null, null, null, null); } //---retrieves a particular contact--- public Cursor getContact(long rowId) throws SQLException { Cursor mCursor = db.query(true, DATABASE_TABLE, new String[] {KEY_ROWID, KEY_NAME, KEY_EMAIL}, KEY_ROWID + "=" + rowId, null, null, null, null, null); if (mCursor != null) { mCursor.moveToFirst(); } return mCursor; } //---updates a contact--- public boolean updateContact(long rowId, String name, String email) { ContentValues args = new ContentValues(); args.put(KEY_NAME, name); args.put(KEY_EMAIL, email); return db.update(DATABASE_TABLE, args, KEY_ROWID + "=" + rowId, null) > 0; } 

}

Solutions Collecting From Web of "क्या एंड्रॉइड डेटाबेस में टेक्स्ट फ़ील्ड पर प्राथमिक कुंजी लागू करना संभव है"

एसक्यूलाइट दस्तावेज के मुताबिक, प्राथमिक कुंजी के लिए डेटाटाइप के रूप में TEXT का प्रयोग करना चाहिए।

मैंने आपकी क्वेरी का उपयोग किया था और यहां यह है, तालिका बनाई गई है।

 CREATE TABLE contacts ( email text primary key not null, name text not null); INSERT INTO contacts VALUES ('sample@email.com', 'sample') INSERT INTO contacts VALUES ('people@email.com', 'sample') 

यहां छवि विवरण दर्ज करें

यहां छवि विवरण दर्ज करें

अब यह वह जगह है जहां गलत हो गया था।

जब मैं इसे फिर से चला गया

 INSERT INTO contacts VALUES ('sample@email.com', 'sample') 

कुछ भी नहीं हुआ, कोई त्रुटि नहीं लेकिन यह रिकार्ड को अपडेट नहीं किया। इसलिए मैं निष्कर्ष निकाला है डेटा अखंडता वहाँ है लेकिन आपको विफलता के बारे में कोई प्रतिक्रिया नहीं मिलती

SQLiteDatabase.insertOrThrow () को एक अपवाद फेंकना चाहिए अगर मान सम्मिलित नहीं किया जा सकता है। साथ ही इसका रिटर्न वैल्यू भी, साथ ही SQLiteDatabase.insert() में से एक है डाली गई पंक्ति या पंक्ति -1 के rowid अगर यह विफल रहता है। आपको अपने कोड में इन विकल्पों में से किसी एक का विकल्प चुनना चाहिए।