0

使用这个例子(https://stackoverflow.com/a/9109728/2808099)我连接了我的数据库。但是我没有在这个数据库中组织搜索。我试图传达来自 EditText 的请求并在 textView(或 ListView)中显示结果。

主要活动

public void LoadAddress(View v)
    {

        searchAddress = editTextSearch.getText().toString();

        TestAdapter mDbHelper = new TestAdapter(this);
        mDbHelper.createDatabase();
        mDbHelper.open();


         Cursor testdata = mDbHelper.getTestData("SELECT * FROM Address " +searchAddress+"';", null);
        String address=testdata.getString(1).toString();
        textView.setText(address); 
        mDbHelper.close();
    }

测试适配器

  public Cursor getTestData(String s, Object o)
{

    try
    {

        String sql ="SELECT * FROM Address";

        Cursor mCur = mDb.rawQuery(sql, null);
        if (mCur!=null)
        {
            mCur.moveToNext();
        }
        return mCur;
    }
    catch (SQLException mSQLException)
    {
        Log.e(TAG, "getTestData >>"+ mSQLException.toString());
        throw mSQLException;
    }
}

不管EditText的内容是什么,从数据库输出的第一行

4

1 回答 1

0

您总是在调用“从地址中选择 *”。这将始终查询所有内容。

String userInp = editTextSearch.getText().toString();

String query = "select * from Addresses where address = " + userInp; 

Cursor cursor= mDbHelper.getDb().rawQuery(query, null);

if (null != cursor)
    cursor.moveToFirst();

String output = cursor.getString(1);

Android 的一个很好的教程是: http ://www.androidhive.info/2011/11/android-sqlite-database-tutorial/

对于此类简单查询,您可能需要考虑使用带参数的查询而不是原始 sql。

你可以在这里学习 SQL:http: //www.w3schools.com/sql/

于 2013-10-01T20:24:19.843 回答