0

私はこれに何日も取り組んできました。私がやりたいことは、ユーザーがボタンをクリックしたときに、SQL lite データベースに対して 1 つの値を返すクエリを実行し (たまたま整数ですが、文字列は問題ありません)、それをテキスト ボックスに入れることです。(また、ユーザーが入力値を変更してボタンをクリックすると、異なる結果が得られます。

たくさんの例を見てきましたが、それらはすべて最後にリストビューを使用して一連の行を表示します。string だと思っていたデータベース アダプタから結果を取得する方法はありますか。以下の mydbadapter のコードでは、KEY_FEE 列から値を返したいと考えています。

public String getdata(){
 String[] columns = new String[]{KEY_ROWID, KEY_SPEED, KEY_TIME, KEY_FEE };
 Cursor c = myDatabase.query(DATABASE_TABLE, columns, "speed like '25' AND "
         + "time like '50'", null, null, null, null);
 String result ="";
 int iRow =c.getColumnIndex(KEY_ROWID);
int iSPEED =c.getColumnIndex(KEY_SPEED);
int iTIME=c.getColumnIndex(KEY_TIME);
int iFEE =c.getColumnIndex(KEY_FEE);

for (c.moveToFirst(); !c.isAfterLast();c.moveToNext()){
    result = result + c.getString(iRow) + " " +c.getString(iSPEED) + " " 
    +c.getString(iTIME)  + " " +c.getString(iFEE) + "/n";
}
 return result;    }

この結果は実際には文字列ですか?

もしそうなら、ボタンをクリックしたときにメインプログラムからアクセスするにはどうすればよいですか: Button.OnClickListener buttonOnClickListener = new Button.OnClickListener(){

         @Override
       public void onClick(View v) {
            System.out.println("The calculate FEE button was clicked " );

            //TODO
            //getdata here from database, to a variable for lineout, sub in for "60".
            //
            myDbHelper.getdata();
            //set the stringVal variable to the Fee
            _stringVal = "Fee is:" **???how to specify the result string from dbhelper here?**;
            //sets the text textview based on prior code: _value = (TextView) findViewById(R.id.textView3);
            _value.setText(_stringVal);

            //System.out.println("Text should say "+_stringVal);
            // System.out.println("Get Data Has been called. ");
       }
    };
4

3 に答える 3

0

はい結果は文字列です。それを文字列として設定すると、文字列になります。

1つの列の値のみを取得したい場合、なぜすべての列の値を結果文字列に入れたのですか?

for (c.moveToFirst(); !c.isAfterLast();c.moveToNext()){
    result = result + c.getString(iRow) + " " +c.getString(iSPEED) + " " 
    +c.getString(iTIME)  + " " +c.getString(iFEE) + "/n";
}

クリックイベントにその値を取得するには

_stringVal = myDbHelper.getdata();

クエリとデータベースの値によっては、複数行のデータを取得する場合があります。結果が非常に長くなり、多くの値が含まれる場合があります。これだけを表示する必要がある場合は問題ありませんが、これらの値を使用してさらに計算を行う必要がある場合、これは良い考えではありません。

于 2012-05-18T05:20:22.237 に答える
0

Android 開発に踏み込む前に、Java の知識を深めることを検討する必要があります。これに役立つ多くのチュートリアルやリソースがウェブ上で利用できます。

あなたの質問に答えるには:

この結果は実際には文字列ですか?

はい、それがオブジェクト参照であるString result ="";ことを示しています。resultString

以下の mydbadapter のコードでは、KEY_FEE 列から値を返したいと考えています。

このコードは、KEY_FEE 列を返すだけではありません。複数の結果 (SQL クエリに一致するすべての結果) からの 4 つの列の値を 1 つの文字列に連結します。

_stringVal = "手数料は:" ???ここで dbhelper からの結果文字列を指定する方法は? ;

これはあなたがそれを行う方法です:

//set the stringVal variable to the Fee
_stringVal = myDbHelper.getdata();
于 2012-05-18T04:52:37.117 に答える
0

誤解しているかもしれませんが、あなたは KEY_FEE 列の値だけが必要だと言っているのに、必要なのは 1 ビットだけなのに、なぜそのすべてのデータを連結しているのですか? それともすべてのビット?

Cursor c = myDatabase.query(DATABASE_TABLE, columns, "speed like '25' AND " 
     + "time like '50'", null, null, null, null); 

c.moveToFirst();
String[] feeArray = new String[c.getcount()]
int i=0;    
while (c.isAfterLast() == false) {
    feeArray[i] = c.getString(c.getColumnIndex(KEY_FEE));     
    i++;
    c.moveToNext();
}

上記は、カーソルによって返された各レコードの文字列配列に KEY_FEE 値を入れます。

于 2012-05-18T06:01:56.477 に答える