0

我已经为此工作了好几天,断断续续。我想要做的是当用户单击一个按钮时,对我的 sql lite 数据库运行一个返回 1 值(可能是整数,但字符串很好)的查询,然后我可以将其放入文本框中。(此外,当用户更改输入值并单击按钮时,他们会得到不同的结果。

我已经浏览了大量示例,但它们都在最后使用列表视图来显示一组行。有没有办法从我的数据库适配器中获取结果,我认为它是一个字符串。在下面来自 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

在进一步涉足 Android 开发之前,您应该考虑提高您的 Java 知识。网上有很多教程和资源可以帮助你。

要回答您的问题:

这个结果实际上是一个字符串吗?

是的,String result ="";告诉你这result是一个String对象引用。

在下面来自 mydbadapter 的代码中,我想从 KEY_FEE 列返回一个值:

您的代码不仅仅返回 KEY_FEE 列。它将多个结果(与您的 SQL 查询匹配的所有结果)中的 4 列值连接成一个字符串。

_stringVal = "Fee is:" ???这里如何指定dbhelper的结果字符串?;

这就是你的做法:

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

是的结果是一个字符串。您将其设置为字符串,因此它是字符串。

如果您只想获取一列的值,为什么要将所有列的值放入结果字符串。

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

也许我误解了,但是您说您只想要 KEY_FEE 列中的值,那么如果您想要的只是一位,为什么还要连接所有这些数据呢?还是所有的一位?

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 回答