简体   繁体   English

如何从 Android SQLite 中的数据库中检索数据?

[英]How to retrieve data from Database in Android SQLite?

I would like to query the data from " names " how can I do it?我想从“名称”中查询数据,我该怎么做? I try but it seems that I only have to consult through the primary key, I am totally new in java and I am starting, I don't know what is the method to search through "nombres" (names in english)我尝试但似乎我只需要通过主键进行咨询,我是 java 的新手,我正在开始,我不知道通过“名词”搜索的方法是什么(英文名称)

public class AdminSQLiteOpenHelper extends SQLiteOpenHelper {
    public AdminSQLiteOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, factory, version);
    }

    @Override
    public void onCreate(SQLiteDatabase BaseDeDatos) {
        BaseDeDatos.execSQL("CREATE TABLE personajes (codigo text primary key, nombres text, contraseña text)");
    }

    @Override
    public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {

    }
}

When I register with a number in " codigo " and then consult it returns the data correctly, but when I register with text example: " asdasd " the console returns: E / SQLiteLog: (1) no such column: asdasd当我在“ codigo ”中注册一个数字然后查询它正确返回数据,但是当我用文本示例注册时:“ asdasd ”控制台返回: E / SQLiteLog: (1) no such column: asdasd

Query method:查询方法:

    private EditText et_codigo, et_nombres, et_contraseña;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_agregarpersonaje);


et_codigo = (EditText)findViewById(R.id.txt_codigo);
et_nombres = (EditText)findViewById(R.id.txt_nombres);
et_contraseña = (EditText)findViewById(R.id.txt_contraseña);

}



    public void Buscar(View view){
    AdminSQLiteOpenHelper admin = new AdminSQLiteOpenHelper(this, "administracion", null, 1);
    SQLiteDatabase BaseDeDatabase = admin.getWritableDatabase();

    String codigo = et_codigo.getText().toString();


    if(!codigo.isEmpty()){
        Cursor fila = BaseDeDatabase.rawQuery
                ("select nombres, contraseña from personajes where codigo =" + codigo, null);



        if(fila.moveToFirst()){
            et_nombres.setText(fila.getString(0));
            et_contraseña.setText(fila.getString(1));
            BaseDeDatabase.close();
        } else {
            Toast.makeText(this,"No existe el artículo", Toast.LENGTH_SHORT).show();
            BaseDeDatabase.close();
        }

    } else {
        Toast.makeText(this, "Debes introducir el código del artículo", Toast.LENGTH_SHORT).show();
    }
}

You can use Room database.您可以使用 Room 数据库。 It provides an abstraction layer over SQLite, and it is easier to use.它在SQLite之上提供了一个抽象层,使用起来更方便。

https://developer.android.com/topic/libraries/architecture/room https://developer.android.com/topic/libraries/architecture/room

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM