2

我需要从 EditText 传递一个参数,当我单击该按钮时,它将启动另一个活动并获取该参数并将其传递给查询。它跟随:

final Button ara = (Button) findViewById(R.id.maddebutton);
    ara.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            String maddeno = madde.getText().toString(); //madde is my EditText
            Intent intent = new Intent(Anayasa.this, MaddeBul.class);
            intent.putExtra("maddeler", maddeno);
            startActivity(intent);
            }
    });

我的第二堂课如下:

Intent intent = getIntent();
    int maddebul = intent.getIntExtra("maddeler", 0); //I don't want to set a default value but it pushes me

try {
        Cursor cursor = FetchRecord(db.query("anayasa", SELECT,
                "no = maddebul", null, null, null, null));
        ShowRecord(cursor);
    } finally {
        database.close();
    }

我的FetchRecord(Cursor c)ShowRecord(Cursor cursor)函数工作正常,因为我在其他类中使用它们。我的“anayasa”数据库中有“no”列,其中包含整数值。

在 LogCat 上,它说“没有像 maddebul 这样的列”。这是真的,没有。它应该是:

SELECT * FROM anayasa WHERE no = maddebul; //as sql command

有什么帮助吗?

4

5 回答 5

2

您在这里添加额外的字符串:

intent.putExtra("maddeler", maddeno);

但是,当您尝试检索额外的内容时,您将其作为 int 检索:

int maddebul = intent.getIntExtra("maddeler", 0);

尝试使用这个

String maddebul = intent.getStringExtra("maddeler", "");

这里的参考是getStringExtra() 方法的文档。

于 2012-06-26T14:13:13.333 回答
1
On LogCat, it says "no column such maddebul". It is true, there isn't. 

由于在 whereClause "no = maddebul" 中,maddebul 不是变量,它是字符串部分,因此更改 whereClause 以获取它的值

Cursor cursor = FetchRecord(db.query("anayasa", SELECT,
                    "no = maddebul", null, null, null, null));

应该

Cursor cursor = FetchRecord(db.query("anayasa", SELECT,
                "no = "+maddebul, null, null, null, null));
于 2012-06-26T14:16:37.390 回答
0

你正在用双引号写 maddebul。

代替

Cursor cursor = FetchRecord(db.query("anayasa", SELECT,
                "no = maddebul", null, null, null, null));

经过

Cursor cursor = FetchRecord(db.query("anayasa", SELECT,
                "no = "+maddebul, null, null, null, null));

更好地使用以下

Cursor cursor = FetchRecord(db.query("anayasa", SELECT,
                "no = ?",new String[]{String.valueOf(maddebul)}, null, null, null));
于 2012-06-26T14:13:30.003 回答
0

您将 Extra 设置为 String 并将其设置为 Integer - 也许这就是问题所在?

于 2012-06-26T14:14:06.677 回答
0

有多个问题:

你把maddebulas String 放在这里所以需要像这样得到它:

String maddebul = intent.getStringExtra("maddeler", "");

此外,您正在形成错误的 SQL 查询,maddebul将其作为字符串传递给数据库,而您实际上想要传递该变量的值。所以它可能是这样的:

Cursor cursor = FetchRecord(db.query("anayasa", SELECT,
                "no = ?",new String[]{maddebul}, null, null, null));
于 2012-06-26T14:16:19.113 回答