Intereting Posts
Xamarin.Forms ListView Исключение OutOfMemoryError на Android Исключение исключения при использовании ExecutorService Как получить возвращаемое значение из javascript в webview android? Изменение ширины развертки Spinner DropDown Как создать подсказку EditText как текст с изображением в android Не удается вызвать void android.view.View.setElevation (float) на нулевом объекте в лапизме / SearchView ActionBar стиль после обновления на Android леденец Android: как сдвинуть высоту выходного звука (в реальном времени) Привязать к сервису из нового контекста для изменения конфигурации или привязки из контекста приложения? Какова структура / шаблон для android / java для организации HTTP-вызовов веб-службы в проекте? BroadcastReceiver для включения / выключения экрана не работает Ошибка: только исходный поток, создавший иерархию представлений, может коснуться его представлений Как передать «данные» между двумя устройствами (Android, iphone)? Как получить контекст из класса неактивности? Закрытие операции onCreate

Разрешить только уникальную запись данных с Android SQLite?

Прежде чем я расскажу о проблемах, я хотел бы отметить, что я знаю, что другие темы задают этот вопрос, однако ни один из них не смог решить мою проблему.

Я работаю над приложением совместного использования, используя BumpAPI, который после получения блока сохраняет его в базу данных SQLite для извлечения в режиме просмотра списка, все это работает нормально, и данные сохраняются, однако, если один и тот же текст Отправлено дважды, оно будет сохранено снова и снова, и в окне списка будет показано это, из того, что я прочитал, мне нужен идентификатор «UNIQUE»? Однако, будучи совершенно новым для SQL, я не понимаю, что касается этого, вот мой класс DataHelper, который им можно использовать для создания и добавления записей, сможет ли кто-нибудь быть достаточно любезен, чтобы изменить его или сообщить мне о возможном решении?

Огромное спасибо

public class DataHelper { private static final String DATABASE_NAME = "tags.db"; private static final int DATABASE_VERSION = 1; private static final String TABLE_NAME = "TagTable"; private Context context; private SQLiteDatabase db; private SQLiteStatement insertStmt; private static final String INSERT = "insert into " + TABLE_NAME + "(name) values (?)"; public DataHelper(Context context) { this.context = context; OpenHelper openHelper = new OpenHelper(this.context); this.db = openHelper.getWritableDatabase(); this.insertStmt = this.db.compileStatement(INSERT); } public long insert(String name) { this.insertStmt.bindString(1, name); return this.insertStmt.executeInsert(); } public void deleteAll() { this.db.delete(TABLE_NAME, null, null); } public List<String> selectAll() { List<String> list = new ArrayList<String>(); Cursor cursor = this.db.query(TABLE_NAME, new String[] { "name" }, null, null, null, null, "name desc"); if (cursor.moveToFirst()) { do { list.add(cursor.getString(0)); } while (cursor.moveToNext()); } if (cursor != null && !cursor.isClosed()) { cursor.close(); } return list; } private static class OpenHelper extends SQLiteOpenHelper { OpenHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL("CREATE TABLE " + TABLE_NAME + "(id INTEGER PRIMARY KEY, name TEXT)" + "text unique, " + "ON CONFLICT REPLACE"); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME); onCreate(db); } } } 

Solutions Collecting From Web of "Разрешить только уникальную запись данных с Android SQLite?"

Сортировал это сам в конце! Позор никто даже не пытался ответить, но, эй, это решение, если кому-то это нужно:

 db.execSQL("CREATE TABLE " + TABLE_NAME + "(id INTEGER PRIMARY KEY, name TEXT unique); 

Похоже, что вы должны сначала добавить уникальный индекс в Table Create statement

 db.execSQL("CREATE TABLE " + TABLE_NAME + "(id INTEGER PRIMARY KEY, name TEXT)" + "**name** unique, " + "ON CONFLICT REPLACE"); 

Это предотвратит наличие двух записей с одинаковыми именами

Во-вторых, вы можете сделать выбор, чтобы проверить наличие данных, прежде чем вставлять