Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android SQLiteException:从数据库读取时无法识别的令牌_Android_Sqlite_Android Sqlite - Fatal编程技术网

Android SQLiteException:从数据库读取时无法识别的令牌

Android SQLiteException:从数据库读取时无法识别的令牌,android,sqlite,android-sqlite,Android,Sqlite,Android Sqlite,我已经在应用程序中创建了一个SQLite数据库,并填充了它,现在我正在尝试从中读取。应用程序不断崩溃,这是我收到的日志: 12-30 05:53:18.008: E/AndroidRuntime(6205): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.testparsing/com.example.testparsing.Urnik}: android.database.sqlit

我已经在应用程序中创建了一个SQLite数据库,并填充了它,现在我正在尝试从中读取。应用程序不断崩溃,这是我收到的日志:

12-30 05:53:18.008: E/AndroidRuntime(6205): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.testparsing/com.example.testparsing.Urnik}: android.database.sqlite.SQLiteException: unrecognized token: "4c" (code 1): , while compiling: SELECT predmet FROM predmeti WHERE dan=PONEDELJEK and ura=2 and oddelek=4c
用于从数据库读取的函数:

Cursor getSubject(String dan, int ura, String oddelek){
    String[] columnNames = new String[1];
    columnNames[0] = SQLiteHelper.PREDMET;
    String selection = SQLiteHelper.DAN+"="+dan+" and "+SQLiteHelper.URA+"="+ura+" and "+SQLiteHelper.ODDELEK+"="+oddelek;
    open();
    return db.query(
            SQLiteHelper.IME_TABELE, 
            columnNames, 
            selection, 
            null, null, null, null);
}
我是如何努力阅读的:

TextView tw1p = (TextView) findViewById(R.id.tview1p);
DatabaseHandler db = new DatabaseHandler(getApplicationContext());

Cursor c = db.getSubject("PONEDELJEK", 2, "4c");
String predmet = c.getString(c.getColumnIndex(SQLiteHelper.PREDMET));
tw1p.setText(predmet);
表的屏幕截图,只是为了证明oddelek“4c”确实存在:

替换为此并检查

SELECT predmet FROM predmeti WHERE dan=PONEDELJEK and ura=2 and oddelek=4c
您需要引用字符串文字,例如:

SELECT predmet FROM predmeti WHERE dan='PONEDELJEK' and ura=2 and oddelek='4c'
但最好对文字使用
占位符:

SELECT predmet FROM predmeti WHERE dan=? and ura=? and oddelek=?
并将您的
null
selectionArgs
更改为

new String[] { dan, Integer.toString(ura), oddelek }

问题仅由缺少报价引起:-

范例

 db.delete(TABLE_NA,E, ADDRESS + "= '" + address + "'", null);
请检查下面的字段 +“=”“+地址+””

{Issue as address是字符串,因此它应该位于'address'下}


谢谢,我在等于“=”+xxx+“”之后缺少一个引号;这就成功了。谢谢!别忘了按原样转义单引号:\'
 db.delete(TABLE_NA,E, ADDRESS + "= '" + address + "'", null);