执行查询和返回结果的方法

时间:2013-04-05 20:15:24

标签: android sqlite

应用程序无法运行 - 尝试执行查询以打印某些值

方法:

public Cursor trying(String vg){
    String q="SELECT quantity FROM " + TABLE_CONTACTS +  " WHERE name=" + vg;
    SQLiteDatabase db = this.getReadableDatabase();
    Cursor  cursor = db.rawQuery(q,null);

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

从主要

调用方法
Cursor wow = db.trying("gold");
text = (TextView) findViewById(R.id.textView13);
text.setText((CharSequence) (wow));

1 个答案:

答案 0 :(得分:2)

起初。由于您是直接将尝试变量添加到语句中,因此必须将变量包装为单引号或将其作为列进行插入。

"SELECT quantity FROM " + TABLE_CONTACTS +  " WHERE name= '" + vg + "'";

第二个“大”问题,请看这里:

text.setText((CharSequence) (wow));

在这里,您尝试将Cursor投射到CharSequence,但这是不可能的。如果要从Cursor检索数据,则必须使用Cursor类的getters方法中的一个 getString()方法:

String quantity = wow.getString(0); // it returns your quantity from Cursor
text.setText(quantity);

现在它应该有效。

建议:

我建议您使用参数化语句,它们在您的查询中实际使用占位符。它们为向数据库添加数据和从数据库检索数据提供了更安全的方式。

让我们重写您的代码:

String q = "SELECT quantity FROM " + TABLE_CONTACTS + " WHERE name = ?";
SQLiteDatabase db = this.getReadableDatabase();
Cursor  cursor = db.rawQuery(q, new String[] {vg});

它很简单。占位符 ? 将替换为您的字符串值。