SQL子选择Args在Where子句中

时间:2014-04-30 00:29:33

标签: android sqlite

我将以下查询发送到Android应用中的DBHelper类:

Cursor c = null;
String tempLastName=lnameText.getText().toString();
String tempFirstName=fnameText.getText().toString();
c=myDbHelper.getProvider(tempLastName.toString(),tempFirstName.toString());

在我的DBHelper类中,getProvider方法我有以下代码:

public Cursor getProvider(String lname,String fname) throws SQLException {
String tempSearchStr=KEY1_LASTNAME+"='lname'"+"AND"+KEY1_FIRSTNAME+"='fname'";
String sql="Select * from ProvidersSummary Where LastName='lname' AND Where FirstName='fname'";
Cursor mCursor=myDataBase.rawQuery("Select * from ProvidersSummary Where LastName='lname' AND  FirstName='fname'",null);

if (mCursor != null) {
mCursor.moveToFirst();
}
return mCursor;
}

如果我只传递“lname”字符串,我将从DB返回一条记录,但是,当发送“lname”和“fname”时,我没有得到记录。

我认为它是字符串的东西,但我可以在尝试每个组合后弄清楚它。

任何帮助或指示表示赞赏。

1 个答案:

答案 0 :(得分:0)

public Cursor getProvider(String lname,String fname) throws SQLException {
    String tempSearchStr=KEY1_LASTNAME+"='lname'"+"AND"+KEY1_FIRSTNAME+"='fname'";
    String sql="Select * from ProvidersSummary Where LastName='lname' AND Where FirstName='fname'";
    Cursor mCursor=myDataBase.rawQuery("Select * from ProvidersSummary Where LastName='lname' AND  FirstName='fname'",null);

首先,请在此处删除tempSearchStrsql。它们未被使用且存在语法问题。

其次,将参数值传递给查询,而不是从字面上查询fnamelname。将查询更改为:

Cursor mCursor=myDataBase.rawQuery("Select * from ProvidersSummary Where LastName=? AND  FirstName=?", new String[] { lname, fname });