[英]android sqlite displaying database
我試圖創建一個應用程序,但遇到了麻煩!
這就是我已經擁有的:
數據庫中填充了不同字符串的列表,例如不同的動物-以及一種定義用戶輸入的信息是否已存在於數據庫中的方法
我想要的是:
當用戶輸入一種動物的正確名稱時,我要顯示該特定動物的ROWID,該動物“熊”的ID應該為54,這就是我要向用戶顯示的內容
我的databasehelper
有以下代碼:
Public boolean insertInfo(String info){
SQLiteDatabase db = this.getReadableDatabase();
String[] cols = new String[]{COL_1, COL_2};
Cursor c = db.query(TABLE_NAME_LAND, cols, COL_2 + "=?", new String[]{"" + info}, null, null, null);
if (c.getCount() > 0) {
return false;
} else return true;
}
這是我的MainActivity
中的代碼,具體取決於助手的這一部分:
public void AddData() {
btnAddData.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
boolean isInserted = myDb.insertInfo(editName.getText().toString());
if (isInserted)
Toast.makeText(MainActivity.this, "Wrong",Toast.LENGTH_SHORT).show();
else
Toast.makeText(MainActivity.this, "Correct", Toast.LENGTH_LONG).show();
editName.setText(null);
}
});
}
}
我想要的幫助是確定如何顯示用戶在EditText中鍵入的特定STRING的信息(ID),例如,它在列表視圖中與DATABASE中已經存在的相同。
在我得到答案之后,對代碼進行了一些編輯之后,我在MainActivity中有了這個:
btnAddData.setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View v) {
boolean isInserted = myDb.insertData(editName.getText().toString());
if (isInserted) {
Cursor data = DatabaseHelper.getID(editName.getText().toString());
int id = data.getInt(data.getColumnIndex("COL_2"));
}
}
});
}
}
這在我的DatabaseHelper中:
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
public Cursor getID(String ID) {
SQLiteDatabase db = this.getWritableDatabase();
Cursor c = db.rawQuery("Select * from " + TABLE_NAME_LAND + " WHERE " + COL_1 + "=?", new String[]{ID});
return c;
}
public boolean insertData(String name) {
SQLiteDatabase db = this.getReadableDatabase();
//String[] cols = new String[]{COL_1, COL_2};
Cursor c = db.rawQuery("Select * from " + TABLE_NAME_LAND + " WHERE " + COL_1 + "=?", new String[]{name});
if (c.getCount() > 0) {
return false;
} else return true;
}
}
在本節中編譯時出現錯誤
Cursor data = DatabaseHelper.*getID*(editName.getText().toString());
無法從靜態上下文引用Error非靜態方法getID(String)
嘗試這個
Cursor c = db.rawQuery("Select * from " + TABLE_NAME_LAND + " WHERE " + COL_1 + "=?", new String[]{info});
您可以在(isInserted)
之后寫
Cursor data = databaseHelper.getID(editName.getText().toString());
data.moveToFirst(); // add this line
int id = data.getInt(data.getColumnIndex("COL_2"));
在您的databaseHelper中,添加以下代碼
public Cursor getID(String ID)
{
SQLiteDatabase db = this.getWritableDatabase();
Cursor c = db.rawQuery("Select * from " + TABLE_NAME_LAND + " WHERE " + COL_1 + "=?", new String[]{info});
return c;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.