我正在尝试创建一个应用程序而且我被卡住了!
这就是我已经拥有的:
数据库填充了不同字符串的列表,例如不同的动物 - 以及定义用户输入的信息是否已存在于数据库中的方法
我想要的是什么:
当用户键入一只动物的正确名称时,我想显示该特定动物的ROWID,动物"熊"应该具有54的ID,这是我想要向用户显示的内容
我的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),该信息(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());
无法从静态上下文引用错误非静态方法getID(String)
答案 0 :(得分:0)
试试这个
Cursor c = db.rawQuery("Select * from " + TABLE_NAME_LAND + " WHERE " + COL_1 + "=?", new String[]{info});
答案 1 :(得分:0)
您可以在(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;
}