Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/222.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

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 Sqlite语法错误_Android_Sqlite_Syntax - Fatal编程技术网

读取行时出现Android Sqlite语法错误

读取行时出现Android Sqlite语法错误,android,sqlite,syntax,Android,Sqlite,Syntax,我有一个简单的android应用程序,可以连接到我的服务器,将表保存到数据库,并通过单击按钮显示所需的数据库行。问题是,每当我想通过使用“日期”列访问我的行时,它就会抛出下面的异常。好吧,如果我按id调用行,一切都正常 我的问题是,这是因为日期变量的点还是别的什么? 注意:我用opener程序查看了数据库,一切看起来都很好,但我不能用android的date列读取行 这是我的例外 02-09 19:45:21.909: E/AndroidRuntime(8286): Caused by:

我有一个简单的android应用程序,可以连接到我的服务器,将表保存到数据库,并通过单击按钮显示所需的数据库行。
问题是,每当我想通过使用“日期”列访问我的行时,它就会抛出下面的异常。
好吧,如果我按id调用行,一切都正常

我的问题是,这是因为日期变量的点还是别的什么? 注意:我用opener程序查看了数据库,一切看起来都很好,但我不能用android的date列读取行

这是我的例外

    02-09 19:45:21.909: E/AndroidRuntime(8286): Caused by: android.database.sqlite.SQLiteException:
 near ".2014": syntax error (code 1): , while compiling: SELECT DISTINCT _id, Date, Day, v1, v2, v3, 
v4 FROM db1 WHERE Date=07.02.2014
我的CREATESQL命令

DATABASE_CREATE = "create table " + DbTableName + " (" + KEY_ROWID
                + " integer primary key autoincrement, " + KEY_Date
                + " text not null, " + KEY_Day + " text not null, " + KEY_v1
                + " text not null, " + KEY_v2 + " text not null, " + KEY_v3
                + " text not null, " + KEY_v4 + " text not null "
                + ");";
我的get方法

public Cursor getDay(String date) throws SQLException {
        Cursor mCursor = db.query(true, DATABASE_TABLE, new String[] {
                KEY_ROWID, KEY_Date, KEY_Day, KEY_v1, KEY_v2, KEY_v3, KEY_v4 },
                KEY_Date + "=" + date, null, null, null, null, null);
        if (mCursor != null) {
            mCursor.moveToFirst();
        }
        return mCursor;
    }

使用
''
或使用
占位符转义字符串文字。也就是说,要么改变

KEY_Date + "=" + date,

或者更好的办法是改变

KEY_Date + "=" + date, null


是关于sqlinjection问题吗?是的,
bind arg方法可以防止语法问题和SQL注入,在某些情况下还可以提高性能。但最初的问题是字符串文字没有被引用。嗯,这是我最初的想法。谢谢你的解决方案。
KEY_Date + "=" + date, null
KEY_Date + "=?", new String[] { date }