android sqlite显示数据库

时间:2017-05-11 10:16:54

标签: java android sqlite android-sqlite

我正在尝试创建一个应用程序而且我被卡住了!

这就是我已经拥有的:

数据库填充了不同字符串的列表,例如不同的动物 - 以及定义用户输入的信息是否已存在于数据库中的方法

我想要的是什么:

当用户键入一只动物的正确名称时,我想显示该特定动物的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)

2 个答案:

答案 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;
}