Intereting Posts
Получение программной версии ОС на Android программно Java и Android: как открыть несколько файлов с намерением? Странное поведение жизненного цикла в приложении Screen Saver Предоставляет ли SAF (Storage Access Framework) проблему с WRITE для SD-карты в Android 4.4 (KitKat)? Невозможно разрешить символ Manifest.permission.READ_PHONE_STATE Проблема с памятью Viewpager Webview Ресурсы $ NotFoundException на Samsung Виджет приложения: эффект пульсации теряется в элементе списка, когда фон добавлен к внешней компоновке Загрузка JNI: предупреждение: не использовать hardcode Context.getFilesDir (). GetPath () вместо этого Тема / Стиль не применяется, когда надуватель используется с ApplicationContext Начало работы Android при нажатии виджета Элемент ListView Андроид Фрагмент и изменение ориентации, вызывающие: IllegalStateException: Не удается выполнить это действие после onSaveInstanceState Для вызова требуется уровень API 11 (текущий мин – 8) android.app.Activity # onCreateView Android SDK Manager не показывает какие-либо пакеты для установки Как отключить / удалить ярлык активности Android и панель ярлыков?

Разрешить только уникальную запись данных с 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"); 

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

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