在ANDROID中根据来自SQLite的ID检索特定数据

时间:2017-05-16 11:40:57

标签: android database sqlite search

我编写了一个代码,我可以从数据库中检索数据,但是当我运行它并尝试搜索某些内容时。按下提交后,应用程序崩溃

public class search extends AppCompatActivity {
    Button SearchButton;
    EditText SearchText;
    TextView SearchResult;
    SQLiteDatabase db;
    String builder;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.search);
        SearchButton=(Button)findViewById(R.id.searchbutton);
        SearchText=(EditText)findViewById(R.id.Searchtext);
        SearchResult=(TextView)findViewById(R.id.SearchCourse);
        db=this.openOrCreateDatabase("Courses", Context.MODE_PRIVATE,null);

        SearchButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int GetID = Integer.valueOf(SearchText.getText().toString());
                Cursor TuplePointer = db.rawQuery("Select from Course where ID="+GetID+"",null);

                TuplePointer.moveToFirst();
                String Course = TuplePointer.getString(TuplePointer.getColumnIndex("Course"));
                SearchResult.setText(Course);
            }
        });

    }
}

5 个答案:

答案 0 :(得分:1)

替换此行

Cursor TuplePointer = db.rawQuery("Select from Course where ID=" + GetID + "", null);

Cursor TuplePointer = db.rawQuery("Select Course from Course where ID=" + GetID + "", null);

Course是您的专栏名称

答案 1 :(得分:0)

请尝试此

SQLiteDatabase db = this.getReadableDatabase();
    String GetID = SearchText.getText().toString();
    Cursor cursor = db.rawQuery("SELECT * FROM Course WHERE ID = ?", new String[]{String.valueOf(GetID)}, null);
    if (cursor.moveToFirst()) {
        do {
            String Course = cursor.getString(cursor.getColumnIndex("Course"));
            SearchResult.setText(Course);
        } while (cursor.moveToNext());
    }

答案 2 :(得分:0)

首先在try catch中编写代码。尝试捕捉确切的异常。你会明白你做错了什么。

 String selectQuery = "SELECT  * FROM " + TABLE_CONTACTS + " Where " + KEY_APP_BOOKINGID + " = " + id;

        Cursor cursor = db.rawQuery(selectQuery, null);

答案 3 :(得分:0)

谢谢大家我弄清楚我在目标课程的获取列索引上做错了什么,但我没有意识到当然没有这样的字段:)

答案 4 :(得分:-1)

  

保持练习,如下面的代码,你将正确调试

public void getFirstName(String id) {
    String sql = "select  first_name from basic_info WHERE contact_id="+ id;
    Cursor c = fetchData(sql);
    if (c != null) {
        while (c.moveToNext()) {

            String FirstName = c.getString(c.getColumnIndex("first_name"));
            Log.e("Result =>",FirstName);
        }
        c.close();
    }
    return data; 
}

public Cursor fetchData(String sql) {
    SQLiteDatabase db = this.getWritableDatabase();

    return db.rawQuery(sql, null);
}