如何使用文本视图值查询数据库行等于文本视图值?
Posted
技术标签:
【中文标题】如何使用文本视图值查询数据库行等于文本视图值?【英文标题】:How to use text view value to query database row equal to the text view value? 【发布时间】:2012-02-06 19:31:31 【问题描述】:我很高兴这个网站在这里。每次都对我有帮助。
所以我的新问题是,我已将一个值从一个活动传递到另一个活动,并将该值设置为文本视图。该值始终为数字。然后我使用“在选择的菜单项上”将该值传递给另一个活动并将该值设置为文本视图。我要做的是使用该值(它是数字并表示与数据关联的行 ID)来查询数据库并返回与前面提到的数值关联的行。然后填充相同活动的适当编辑文本或文本视图。
这里是我调用文本值的地方 (tv1)
private void populateFields()
if (tv1!=null)
Cursor note = mDbHelper.fetchRow(tv1);
startManagingCursor(note);
//rowid.setText(note.getString(
// note.getColumnIndexOrThrow(DatabaseManager.KEY_ROWID)));
txtbox28.setText(note.getString(
note.getColumnIndexOrThrow(DatabaseManager.KEY_NAME)));
txtbox1.setText(note.getString(
note.getColumnIndexOrThrow(DatabaseManager.NICBASEML)));
txtbox4.setText(note.getString(
note.getColumnIndexOrThrow(DatabaseManager.NICDROPS)));
txtbox8.setText(note.getString(
note.getColumnIndexOrThrow(DatabaseManager.NICPERCT)));
和查询
public Cursor fetchRow(TextView tv1) throws SQLException
Cursor mCursor =
mDb.query(true,DATABASE_TABLE, new String[] KEY_ROWID, KEY_NAME,
NICBASEML, NICDROPS, NICPERCT, PGML, PGDROPS,PGPERCT,
VGML,VGDROPS,VGPERCT, WAPML, WAPDROPS, WAPPERCT,
FLV1NAME, FLV1ML, FLV1DROPS, FLV1PERCT,
FLV2NAME, FLV2ML, FLV2DROPS, FLV2PERCT,
FLV3NAME, FLV3ML, FLV3DROPS, FLV3PERCT,
FLV4NAME, FLV4ML, FLV4DROPS, FLV4PERCT,
DROPSML, AMOUNT, FINALNIC, BPG, BVG, BASENIC, KEY_ROWID + "=" + tv1, null, null, null, null, null);
if (mCursor != null)
mCursor.moveToFirst();
return mCursor;
这是我现在得到的错误。
02-07 12:14:16.120:E/androidRuntime(2713):由:android.database.sqlite.SQLiteException:靠近“@405dcd48”:语法错误:,编译时:SELECT DISTINCT _id、name、nicbaseml ,nicdrops,nicperct,pgml,pgdrops,pgperct,vgml,vgdrops,vgperct,wapml,wapdrops,wapperct,flv1name,flv1ml,flv1drops,flv1perct,flv2name,flv2ml,flv2drops,flv2perct,flv3name,flv3ml,flv3drops,flv3perct,flv4name,flv ,flv4drops,flv4perct,dropml,数量,finalnic,bpg,bpg,basenic FROM recipes WHERE _id=android.widget.TextView@405dcd48
嗯,卡在这个上。 @405dcd48 的错误在哪里?
【问题讨论】:
【参考方案1】:这里是解决方案。花了好几个小时(2 天)才弄清楚这一点,然后就惨了!手到脸的瞬间。但无论如何,这里是其他有相同问题的解决方案。在填充字段的声明中(在本例中为 fetch(row)。
这样做:
private void populateFields()
String row = tv1.getText().toString();//String to get the textview of the rowid
if (tv1!= null) //Checking to see if the field is not empty to proceed
Cursor note = mDbHelper.fetchRow(row);//Calling my cursor to manage data
startManagingCursor(note);//Starting the management and retrieve data
您将收到上述错误,然后是空指针异常。这可以通过声明你的字段来解决 -->(txtbox1= (TextView) findViewById(R.id.textView22);.
您的数据库管理器需要针对字符串进行配置。
像这样:
public Cursor fetchRow(String row) throws SQLException
现在您可以使用等于您要查找的数据的行 ID 的 textview 或 editview 值从行中检索数据。
【讨论】:
以上是关于如何使用文本视图值查询数据库行等于文本视图值?的主要内容,如果未能解决你的问题,请参考以下文章