2017-03-31 5 views
-1

こんにちは、私はアンドロイド開発に新しいです、私は予定を格納するアプリを作ろうとしています。私のフラグメントとアクティビティはすべてうまくいきますが、私が入力しようとしている文字列がすでに一意の文字列として保存されていないことをsqliteデータベースで確認する方法を試しています。入力した文字列が一意の文字列でないことを確認する方法。 Java(SQLiteデータベース)

これまでのデータベースのコードです。

public class MyDataBase extends SQLiteOpenHelper { 

    private static final int DATABASE_VERSION = 4; 
    private static final String DATABASE_NAME = "appointments.db"; 
    public static final String TABLE_APPOINTMENTS = "appointments"; 
    public static final String COLUMN_DAY = "day"; 
    public static final String COLUMN_MONTH = "month"; 
    public static final String COLUMN_YEAR = "year"; 
    public static final String COLUMN_TITLE = "title"; 
    public static final String COLUMN_TIME = "time"; 
    public static final String COLUMN_DESCRIPTION = "details"; 


    public MyDataBase(Context context) { 
     super(context, DATABASE_NAME, null, DATABASE_VERSION); 
    } 
    @Override 
    public void onCreate(SQLiteDatabase db) { 
     String query = "CREATE TABLE " + TABLE_APPOINTMENTS 
       + "(" + COLUMN_DAY + " INTEGER, " + COLUMN_MONTH + " INTEGER, " + COLUMN_YEAR + " INTEGER, " 
       + COLUMN_TITLE + " TEXT NOT NULL UNIQUE, " + COLUMN_TIME + " TEXT, " + COLUMN_DESCRIPTION + " TEXT" + ")"; 
     db.execSQL(query); 
    } 

    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
     db.execSQL("DROP TABLE IF EXISTS " + TABLE_APPOINTMENTS); 
     onCreate(db); 
    } 

    public void addAppointment(Appointment app){ 
     SQLiteDatabase db = getWritableDatabase(); 

     ContentValues values = new ContentValues(); 
     values.put(COLUMN_DAY, app.get_day()); 
     values.put(COLUMN_MONTH, app.get_month()); 
     values.put(COLUMN_YEAR, app.get_year()); 
     values.put(COLUMN_TITLE, app.get_title()); // need to check that string being entered isn't already a unique entry 
     values.put(COLUMN_TIME, app.get_time()); 
     values.put(COLUMN_DESCRIPTION, app.get_details()); 
     db.insert(TABLE_APPOINTMENTS, null, values); 
     db.close(); 
    }  

} 

答えて

0

このメソッドを呼び出すと、trueが返されます。それ以外の場合は存在しません。

public boolean checkAppointmentExist(String name){ 
     booolean isExist = false; 

     String selection = COLUMN_TITLE + " = ? "; 
     String[] selectionArgs = new String[]{name}; 
     Cursor cursor = database.query(TABLE_APPOINTMENTS, null, selection, selectionArgs, null, null, null); 
     if (cursor != null) { 
      if (cursor.getCount() > 0) { 
       isExist = true; 
      } 
     } 

    return isExist; 

} 


public void addAppointment(Appointment app){ 

     if(!checkAppointmentExist(app.get_title())){ 
     SQLiteDatabase db = getWritableDatabase(); 

     ContentValues values = new ContentValues(); 
     values.put(COLUMN_DAY, app.get_day()); 
     values.put(COLUMN_MONTH, app.get_month()); 
     values.put(COLUMN_YEAR, app.get_year()); 
     values.put(COLUMN_TITLE, app.get_title()); // need to check that string being entered isn't already a unique entry 
     values.put(COLUMN_TIME, app.get_time()); 
     values.put(COLUMN_DESCRIPTION, app.get_details()); 
     db.insert(TABLE_APPOINTMENTS, null, values); 
     db.close(); 
     } 

    } 
+0

ありがとうございます。 – Spoingen

関連する問題