在 Android Studio 中从 SQLite 数据库中以字符串形式检索数据

Sar*_*jib 2 java database sqlite android android-studio

我想在 SQLite 数据库中保存名称,稍后在另一个活动中我想将该名称作为字符串值检索。但是我无法从数据库中获取数据。请帮帮我。我的代码如下,

数据库助手:

    private static final String TAG = "DatabaseHelper";
    private static final String TABLE_NAME = "user";
    private static final String COL1 = "ID";
    private static final String COL2 = "name";

    public void onCreate(SQLiteDatabase db) {String createTable = 
    "CREATE TABLE " + TABLE_NAME + " (ID INTEGER PRIMARY KEY 
    AUTOINCREMENT, " + COL2 +" TEXT)"; 
    db.execSQL(createTable);}

    public boolean addData(String item) {
    SQLiteDatabase db = this.getWritableDatabase();
    ContentValues contentValues = new ContentValues();
    contentValues.put(COL2, item);

            Log.d(TAG, "addData: Adding " + item + " to " + TABLE_NAME);

            long result = db.insert(TABLE_NAME, null, contentValues);

            if (result == -1) {
                return false;
            } else {
                return true;
            }
        }
Run Code Online (Sandbox Code Playgroud)

主要活动:

    mDatabaseHelper=new DatabaseHelper(this);
    Username=(EditText)findViewById(R.id.user);
    saveBtn=(Button)findViewById(R.id.button);

    saveBtn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
    String newEntry = Username.getText().toString();
                            AddData(newEntry);
                            Username.setText("");

    Intent intent = new Intent(MainActivity.this, HomeActivity.class);
                        startActivity(intent);
                    }
                });

            }
            public void AddData(String newEntry) {
                boolean insertData = mDatabaseHelper.addData(newEntry);
        }
        }
Run Code Online (Sandbox Code Playgroud)

家庭活动:

public class HomeActivity extends AppCompatActivity {

    DatabaseHelper mDatabaseHelper;
    String Username;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_home);

        mDatabaseHelper = new DatabaseHelper(this);

    }

}
Run Code Online (Sandbox Code Playgroud)

在这里,在这个家庭活动中,我想将用户名作为字符串获取,但我不知道该怎么做。请帮帮我...

Mik*_*keT 5

要检索数据,请运行将数据提取到 Cursor 中的查询。Cursor 将由 0-n 行组成,并将具有与查询中定义的一样多的列。然后您在行中移动并使用适当的 Cursor get????? 获取实际数据的方法。

例如,您可以将以下方法添加到 DatabaseHelper 中:-

public String getName(long id) {

    String rv = "not found";
    SqliteDatabase db = this.getWritableDatabase();
    String whereclause = "ID=?";
    String[] whereargs = new String[]{String.valueOf(id)};
    Cursor csr = db.query(TABLE_NAME,null,whereclause,whereargs,null,null,null);
    if (csr.moveToFirst()) {
        rv = csr.getString(csr.getColumnIndex(COL2));
    }
    return rv;
}
Run Code Online (Sandbox Code Playgroud)

然后可以使用以上内容String name = mDatabaseHelper.getName(1);

  • 请注意,这假定存在 ID 为 1 的行。