我在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());
}
}
是什么导致这种情况发生?它只是说“正在运行活动”,仅此而已。
谢谢。
答案 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);
..................................
}