单击保存按钮

时间:2019-04-18 13:12:56

标签: android sqlite

我在SQL数据库中有一张课程表和课程说明。例如

课程代码 -------------------- 课程名称

Engineering101 ......................物理基础

Math101 ........................微积分的基础

...........等等

在编辑文本字段中输入课程代码 Engineering101后,我想检索课程名称的值,例如说“物理基础”描述。

我的文件在这里中断:

public void saveData(View view) {
        EditText courseCodeName, courseCodeNumber;
        courseCodeName = findViewById(R.id.course_code);
        courseCodeNumber=findViewById(R.id.course_number);
        //get course name based off of coursenumber. make sure course name field blank
        if(courseCodeName.toString()=="" |courseCodeNumber.toString()!=""){
            // get codename and course name columns
            Cursor c = db.rawQuery("SELECT _id, course_name1, course_code1 FROM contacts WHERE course_code1 like '"+courseCodeNumber+"'",
                    null);
            if(c!=null){
                if(c.moveToFirst()){
                    do{
                        final String[] courseName=c.getColumnNames();// <---BREAKS HERE
                        String m = courseName[0];
                        //String course_name=c.getString(c.getColumnNames(dBContract.MenuEntry.COLUMN_CODE));
                        Log.v("Set Correctly?", m);

                    }while(c.moveToNext());
                }
            }

是什么导致这种情况发生?它只是说“正在运行活动”,仅此而已。

谢谢。

1 个答案:

答案 0 :(得分:0)

通过阅读if (...)

上方的评论
//get course name based off of coursenumber. make sure course name field blank

我认为应该是:

if(courseCodeName.getText().toString().trim().isEmpty() && !courseCodeNumber.getText().toString().trim().isEmpty())

然后使用一种安全的方法查询表,以免使用占位符来进行sql注入:

Cursor c = db.rawQuery("SELECT course_name1 FROM contacts WHERE course_code1 = ?", new String[] {courseCodeNumber});

我将语句更改为仅返回course_name1,因为您对其他任何列都不感兴趣,并且还将like更改为=
然后,我不知道您是否真的需要循环。您是否期望返回多于1行?
我没问题,因为我认为course_code1是唯一的(或不是唯一的)。
这样做:

if(c.moveToFirst()){
    String course_name = c.getString(0);
    ..................................
}