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);
            }
    });

私の2番目のクラスは次のとおりです。

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();
    }

my関数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するので、次のように取得する必要があります。

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 に答える
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 に答える