1

2つの編集テキストから名前と電話番号を入力したい.2つのボタンを使用して保存し、リストビューを使用してエミュレーターに表示します.名前を入力した後、保存ボタンをクリックしたときに、同じ名前が既に入力されているかどうかを確認する方法. 私はアンドロイドの説明が初めてで、本当に役に立ちます。

public void onCreate(SQLiteDatabase db) {

    db.execSQL("CREATE TABLE "+tbname+"("+Key_id+" INTEGER PRIMARY KEY AUTOINCREMENT, "+Key_name+" TEXT,"+Key_mobile+" TEXT)");

}

public void n(String aa, String bb) {
    SQLiteDatabase db=this.getWritableDatabase();
    ContentValues cv=new ContentValues();
    cv.put(Key_name, aa);
    cv.put(Key_mobile, bb);
    db.insert(tbname, Key_name, cv);

    db.close();

}

public Cursor cr()

{
    SQLiteDatabase db=getReadableDatabase();
    String [] colms=new String[]{Key_id+" as _id",Key_name,Key_mobile};
    Cursor cur=db.query(tbname, colms, null, null, null, null, null);
    cur.moveToFirst();
    return cur;



}
4

2 に答える 2

2

NOT NULL および UNIQUE 制約を追加して、テーブル定義を変更することから始めます。

db.execSQL("CREATE TABLE "+tbname+"("+Key_id+" INTEGER PRIMARY KEY AUTOINCREMENT, "+Key_name+" TEXT NOT NULL UNIQUE,"+Key_mobile+" TEXT)"); 

次に、挿入に使用する方法を選択できます。以下を使用できます。

insertOrThrow新しいレコードの ID を返すか、エラーの場合は -1 を返します (一意の名前を持たないという制約の失敗はエラーになります)。

insertWithOnConflict入力パラメーター 'conflictAlgorithm' = CONFLICT_IGNORE またはエラーの場合は -1 の場合、新しいレコードの ID または既存の行の主キーを返します。

個人的にはinsertWithOnConflict、CONFLICT_IGNORE フラグを設定して使用します。そうすれば、重複レコードの行 ID を取得できます (重複を入力させないようにすることもできます)。

于 2012-07-06T04:47:02.233 に答える
0

UNIQUEテーブルのフィールド定義に入れてから使用しますinsertOrThrow。同じものを挿入するとinsertOrThrow、例外が発生し、インターセプトできます。

于 2012-07-05T20:38:28.337 に答える