Java Android.Ошибка при выполнении запроса в DatabaseHelper - PullRequest
0 голосов
/ 08 декабря 2011

Я хочу получить из sqlite все продукты, которые имеют один и тот же рынок, один из которых выбран из счетчика

моя функция из базы данныхhelper:

public String getSelectedData(String market) {
    // TODO Auto-generated method stub
    String[] columns = new String[]{KEY_PRODNAME, KEY_PRODAMOUNT ,KEY_AMOUNTTYPE, KEY_MARKETID};
    Cursor c= myDatabase.query(DATABASE_PRODTABLE, columns, KEY_MARKETID + "=" + market, null, null, null, null);
    String result = "";

    //int iRow = c.getColumnIndex(KEY_PRODROWID);
    int iName = c.getColumnIndex(KEY_PRODNAME);
    int iAmount = c.getColumnIndex(KEY_PRODAMOUNT);
    int iAmountType = c.getColumnIndex(KEY_AMOUNTTYPE);
    int iMarket = c.getColumnIndex(KEY_MARKETID);
    int i=0;
    for(c.moveToFirst(); !c.isAfterLast(); c.moveToNext()){
        i++;
        result = result + i + ". " + c.getString(iName) + " " + c.getString(iAmount) + " " + c.getString(iAmountType) + " " +  c.getString(iMarket) +  "\n";
    }
    return result;

}

Это дает мне ошибку при выполнении getSelectedData (market)

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // setare continut din layout
    setContentView(R.layout.viewlist);
    TextView tv=(TextView)findViewById(R.id.tvSQLinfo);
    buton = (Button)findViewById(R.id.button1);
    buton.setOnClickListener(this);
    Bundle bundle = getIntent().getExtras();
    String market = bundle.getString("market");

    //tv.setText("Data send from previous intent nSite Name = +" + market );
    //Afisare produse din baza de date
   DatabaseHelper info= new DatabaseHelper(ViewProductsActivity.this);
    try {
        info.open();
    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
  String data = info.getSelectedData(market);
  tv.setText(data);
  info.close();

1 Ответ

0 голосов
/ 08 декабря 2011

рассмотрите возможность объявления KEY_MARKETID как NUMERIC или как INTEGER, советуем вам всегда использовать числа для идентификаторов, а не для строк.вот пример:

private static final String BUDGETS_CREATE=
"create table budgets ("+KEY_ROWID+" integer primary key autoincrement,"
+KEY_LIST+" text not null, "+KEY_BDGT+" integer not null, "+KEY_SOLD+"numeric);";

вот ссылка, которая может быть полезна для типов данных sqlite: http://www.sqlite.org/datatype3.html

другой способ выполнения запроса - использование необработанный запрос оператор.и вставьте в строку свой запрос.

String sqlwhere ="SELECT * FROM budgets;";
Cursor cur=mDb.rawQuery(sqlwhere, null);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...