こんにちは私のデータベースを調べて、特定の文字列がこの場合は列のタイトルが存在するかどうかを確認しようとしています。私はその行からすべての情報を取得し、いくつかの追加の検証のために使用することができます。特定の文字列のSQLデータベースを検索し、その文字列が存在する行IDを返す
私はgetAppointment IDメソッドでこれを試みましたが、カーソルインデックスエラー-1を取得し続けます。私はIDを返すことができると、私は行を取得し、正しい予定のインスタンスを返すためにそれを使用する予定です。私はSQLに非常に慣れていて、どんなヘルパーも高く評価されます。
public class MyDataBase extends SQLiteOpenHelper {
private static final int DATABASE_VERSION = 1;
private static final String DATABASE_NAME = "appointments.db";
public static final String TABLE_APPOINTMENTS = "appointments";
public static final String _ID = "id";
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
+ "(" + _ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + COLUMN_DAY + " INTEGER, " + COLUMN_MONTH + " INTEGER, " + COLUMN_YEAR + " INTEGER, "
+ COLUMN_TITLE + " TEXT, " + 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 int getAppointmentID(String name){
SQLiteDatabase db = getReadableDatabase();
int i=0;
String selection = COLUMN_TITLE + " = ? ";
String[] selectionArgs = new String[]{name};
Cursor cursor = db.query(TABLE_APPOINTMENTS, null, selection, selectionArgs, null, null, null);
if (cursor != null) {
cursor.moveToFirst();
if(cursor.moveToNext())
i = cursor.getInt(0);
}
cursor.close();
return i;
}
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();
}
public Appointment getAppointment(int a){
String selectQuery = "SELECT * FROM " + TABLE_APPOINTMENTS + " WHERE id
= " + Integer.toString(a);
SQLiteDatabase db = this.getWritableDatabase();
Cursor c = db.rawQuery(selectQuery, null);
Appointment app = new Appointment();
if(c.moveToFirst()){
app.set_day(Integer.parseInt(c.getString(1)));
app.set_month(Integer.parseInt(c.getString(2)));
app.set_year(Integer.parseInt(c.getString(3)));
app.set_title(c.getString(4));
app.set_time(c.getString(5));
app.set_details(c.getString(6));
}
return app;
}
}
は私の答えをチェックしてください。 – tahsinRupam