Как запросить пользовательские данные ввода в SQLIte? - PullRequest
0 голосов
/ 20 февраля 2012

Я пытаюсь написать запрос в SQLite. Приложение похоже на то, когда пользователь указывает идентификатор в текстовом поле, соответствующий цвет (который берется из базы данных) должен быть напечатан в качестве вывода. Но я столкнулся с проблемой здесь. Имя переменной в коде определяется как String, но запросом является запрос (String, String [], String, String [], String, String, String).

Ниже приведен мой код. Ничего не печатается на выходе. Пожалуйста, помогите мне

package cis493.sqldatabases;



import android.app.Activity;
import android.os.Bundle;
import android.app.Activity;
import android.database.Cursor;
import android.database.sqlite.*;
import android.os.Bundle;
import android.text.Editable;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

public class SQLDemo1Activity extends Activity {
    private SQLiteDatabase db;
    CharSequence colour = null;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
       EditText edit1 = (EditText) findViewById(R.id.e1);
        final TextView met = (TextView) findViewById(R.id.t1);
    Button but1 = (Button) findViewById(R.id.b1);
      final String name=edit1.getText().toString();

    but1.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {


        try{
            db= SQLiteDatabase.openDatabase(
            "/data/data/cis493.sqldatabases/databases/multilinguialdatabase.sqlite",
            null,
            SQLiteDatabase.CREATE_IF_NECESSARY);
             db.beginTransaction();
            Cursor cursor =  db.query(
                        "colors" /* table */,
                        new String[] { "English" } /* columns */,
                        "ID = ?" /* where or selection */,
                        name /* selectionArgs i.e. value to replace ? */,
                        null /* groupBy */,
                        null /* having */,
                        null /* orderBy */
                    );
            if (cursor.moveToFirst()) {
                do {
                     colour= cursor.getString(0);
                // use value
                } while (cursor.moveToNext());
            }
                            met.setText(colour);
                         db.endTransaction();
            db.close();
            }
            catch(SQLiteException e) {
            //Toast.makeText(this, e.getMessage(), 1).show();
            }
        }
    });
           }

    }

Ответы [ 2 ]

1 голос
/ 20 февраля 2012

Попробуйте использовать rawQuery вместо запроса:

rawQuery (String sql, String [] selectionArgs)

с помощью rawQuery вы можете отправить свой собственный sql-запрос в sqliteDatabase.

Более того, открытие sqliteDatabase с полным путем выглядит для меня злым, может быть, вы можете использовать что-то вроде SQLiteOpenHelper.getWritableDatabase ().

Edit: cursor.getCount () возвращает положительное целое число?

0 голосов
/ 21 февраля 2012

Получил решение, когда я поставил запрос как

cursor=db.rawQuery("SELECT ID FROM colors WHERE English='"+name1+"'", null);

имя должно быть объявлено как редактируемое для использования getText();.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...