Android 我无法从sqlite获取特定数据?请帮帮我
!![这是我在DBHelper中查找方法的代码].class[1]Android 我无法从sqlite获取特定数据?请帮帮我,android,Android,!![这是我在DBHelper中查找方法的代码].class[1] public StringBuilder findData(String find) { StringBuilder output = new StringBuilder("Our data is:\n"); Cursor c = ourHelper.getReadableDatabase().rawQuery("SELECT abbrevaition FROM abbrtab WHERE
public StringBuilder findData(String find)
{
StringBuilder output = new StringBuilder("Our data is:\n");
Cursor c = ourHelper.getReadableDatabase().rawQuery("SELECT abbrevaition FROM abbrtab WHERE acronym"+" = ? ;", new String[]{find});
String remarks=" ";
int iRemarks = c.getColumnIndex(KEY_ABBR);
if( c.moveToFirst() && c.getCount()>0 )
{
remarks= c.getString(iRemarks);
if(remarks.isEmpty())
{
Toast.makeText(ourContext, "not", Toast.LENGTH_LONG).show();
}
output.append(remarks);
}
c.close();
return output;
}
!![这是Main.java中用于从SQLite3获取数据的代码。当我从abbrtab提供查询select*时,它将执行。并应用where条件,则我不会获取任何东西。][1]
@Override
public void onClick(View v)
{
Toast.makeText(getApplicationContext(), String.valueOf("Hi"),Toast.LENGTH_LONG).show();
// TODO Auto-generated method stub
ASNDBAdapter info = new ASNDBAdapter(AllBranches.this);
info.open();
String data = et.getText().toString();
String result = info.findData(data).toString();
Intent i = new Intent(AllBranches.this, ViewData.class);
i.putExtra("my_data", result);
startActivity(i);
Toast.makeText(getApplicationContext(), String.valueOf(result),
Toast.LENGTH_LONG).show();
info.close();
}
要在查询中获取参数值,必须使用like?: 对于这样一个简单的查询,您不需要使用rawQuery,只需要使用 您还必须确保列名是正确的
尝试这种方法。要将参数值输入查询,必须使用like?:
public StringBuilder findData(String find)
{
StringBuilder output = new StringBuilder("Our data is:\n");
Cursor c = ourHelper.getReadableDatabase().query("abbrtab", new String[] {"abbrevaition"},"acronym" +"="+find, null, null, null, null);
String remarks=" ";
int iRemarks = c.getColumnIndex(KEY_ABBR);
if( c.moveToFirst() && c.getCount()>0 )
{
remarks= c.getString(iRemarks);
if(remarks.isEmpty())
{
Toast.makeText(ourContext, "not", Toast.LENGTH_LONG).show();
}
output.append(remarks);
}
c.close();
return output;
}
对于这样一个简单的查询,您不需要使用rawQuery,只需要使用
您还必须确保列名是正确的
这样试试
public StringBuilder findData(String find)
{
StringBuilder output = new StringBuilder("Our data is:\n");
Cursor c = ourHelper.getReadableDatabase().query("abbrtab", new String[] {"abbrevaition"},"acronym" +"="+find, null, null, null, null);
String remarks=" ";
int iRemarks = c.getColumnIndex(KEY_ABBR);
if( c.moveToFirst() && c.getCount()>0 )
{
remarks= c.getString(iRemarks);
if(remarks.isEmpty())
{
Toast.makeText(ourContext, "not", Toast.LENGTH_LONG).show();
}
output.append(remarks);
}
c.close();
return output;
}
这里,abbrtab是表名,abbrevaition是字段名
这里abbrtab是表名,abbrevaition是字段名。是不是SELECT语句中的字段abbrevaition拼写错误?是不是SELECT语句中的字段abbrevaition拼写错误?
public StringBuilder findData(String find)
{
StringBuilder output = new StringBuilder("Our data is:\n");
Cursor c = ourHelper.getReadableDatabase().query("abbrtab", new String[] {"abbrevaition"},"acronym" +"="+find, null, null, null, null);
String remarks=" ";
int iRemarks = c.getColumnIndex(KEY_ABBR);
if( c.moveToFirst() && c.getCount()>0 )
{
remarks= c.getString(iRemarks);
if(remarks.isEmpty())
{
Toast.makeText(ourContext, "not", Toast.LENGTH_LONG).show();
}
output.append(remarks);
}
c.close();
return output;
}