Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/225.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 E/SQLiteLog(2082):(1)靠近;“安全性”:语法错误_Android_Sqlite - Fatal编程技术网

Android E/SQLiteLog(2082):(1)靠近;“安全性”:语法错误

Android E/SQLiteLog(2082):(1)靠近;“安全性”:语法错误,android,sqlite,Android,Sqlite,我不熟悉使用SQLite,所以我认为构造select查询是问题所在 无论如何,我正试图准备一份声明,根据当天的情况给出模块名称、模块授课时间和模块研讨会时间(在MainActivity中确定) 下面是返回列表的方法 getModuleTime public List<tableModules> getModuleTime(String module1, String module2, String module3, String day) { List<tableMod

我不熟悉使用SQLite,所以我认为构造select查询是问题所在

无论如何,我正试图准备一份声明,根据当天的情况给出模块名称、模块授课时间和模块研讨会时间(在
MainActivity
中确定)

下面是返回列表的方法 getModuleTime

public List<tableModules> getModuleTime(String module1, String module2, String module3, String day) {
    List<tableModules> moduleList = new ArrayList<tableModules>();
    // Select All Query     
    SQLiteDatabase db = this.getWritableDatabase();
    Cursor cursor = db.rawQuery("SELECT modulename, modulelecturetime, moduleseminartime FROM " + Table2 + " WHERE modulename=? OR modulename=? OR modulename=? AND WHERE modulelecturedate=? OR moduleseminardate=?", new String[]{module1, module2, module3, day, day});  
    // looping through all rows and adding to list
    if (cursor.moveToFirst()) {
        do {
            tableModules module = new tableModules();
            module.modulename = cursor.getString(1);
            module.modulelecturedate = cursor.getString(2);
            module.moduleseminardate = cursor.getString(3);
            moduleList.add(module);
        } while (cursor.moveToNext());
    }
    // return contact list
    return moduleList;      
}
public List getModuleTime(字符串模块1、字符串模块2、字符串模块3、字符串日期){
List moduleList=新建ArrayList();
//选择所有查询
SQLiteDatabase db=this.getWritableDatabase();
Cursor Cursor=db.rawQuery(“从“+Table2+”中选择modulename、ModuleElectionTime、ModuleMinArTime,其中modulename=?或modulename=?或modulename=?以及其中ModuleElectionUreDate=?或ModuleMinArDate=?”,新字符串[]{module1、module2、module3、day、day});
//循环遍历所有行并添加到列表
if(cursor.moveToFirst()){
做{
tableModules模块=新的tableModules();
modulename=cursor.getString(1);
module.modulelecturedate=cursor.getString(2);
module.moduleseminardate=cursor.getString(3);
moduleList.add(模块);
}while(cursor.moveToNext());
}
//返回联系人列表
返回模块列表;
}
以下是日志:

02-23 01:18:27.177: E/SQLiteLog(3050): (1) near "WHERE": syntax error
02-23 01:18:27.192: D/AndroidRuntime(3050): Shutting down VM
02-23 01:18:27.217: E/AndroidRuntime(3050): FATAL EXCEPTION: main
02-23 01:18:27.217: E/AndroidRuntime(3050): Process: com.example.project, PID: 3050
02-23 01:18:27.217: E/AndroidRuntime(3050): java.lang.RuntimeException: Unable to resume activity {com.example.project/com.example.project.MainActivity}: android.database.sqlite.SQLiteException: near "WHERE": syntax error (code 1): , while compiling: SELECT modulename, modulelecturetime, moduleseminartime FROM Modules WHERE modulename=? OR modulename=? OR modulename=? AND WHERE modulelecturedate=? OR moduleseminardate=?
02-23 01:18:27.217: E/AndroidRuntime(3050):     at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2989)
02-23 01:18:27.217: E/AndroidRuntime(3050):     at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3020)
02-23 01:18:27.217: E/AndroidRuntime(3050):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2395)
02-23 01:18:27.217: E/AndroidRuntime(3050):     at android.app.ActivityThread.access$800(ActivityThread.java:151)
02-23 01:18:27.217: E/AndroidRuntime(3050):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
02-23 01:18:27.217: E/AndroidRuntime(3050):     at android.os.Handler.dispatchMessage(Handler.java:102)
02-23 01:18:27.217: E/AndroidRuntime(3050):     at android.os.Looper.loop(Looper.java:135)
02-23 01:18:27.217: E/AndroidRuntime(3050):     at android.app.ActivityThread.main(ActivityThread.java:5257)
02-23 01:18:27.217: E/AndroidRuntime(3050):     at java.lang.reflect.Method.invoke(Native Method)
02-23 01:18:27.217: E/AndroidRuntime(3050):     at java.lang.reflect.Method.invoke(Method.java:372)
02-23 01:18:27.217: E/AndroidRuntime(3050):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
02-23 01:18:27.217: E/AndroidRuntime(3050):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
02-23 01:18:27.217: E/AndroidRuntime(3050): Caused by: android.database.sqlite.SQLiteException: near "WHERE": syntax error (code 1): , while compiling: SELECT modulename, modulelecturetime, moduleseminartime FROM Modules WHERE modulename=? OR modulename=? OR modulename=? AND WHERE modulelecturedate=? OR moduleseminardate=?
02-23 01:18:27.217: E/AndroidRuntime(3050):     at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
02-23 01:18:27.217: E/AndroidRuntime(3050):     at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889)
02-23 01:18:27.217: E/AndroidRuntime(3050):     at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500)
02-23 01:18:27.217: E/AndroidRuntime(3050):     at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
02-23 01:18:27.217: E/AndroidRuntime(3050):     at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
02-23 01:18:27.217: E/AndroidRuntime(3050):     at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:37)
02-23 01:18:27.217: E/AndroidRuntime(3050):     at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:44)
02-23 01:18:27.217: E/AndroidRuntime(3050):     at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1316)
02-23 01:18:27.217: E/AndroidRuntime(3050):     at android.database.sqlite.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1255)
02-23 01:18:27.217: E/AndroidRuntime(3050):     at com.example.project.DB.getModuleTime(DB.java:134)
02-23 01:18:27.217: E/AndroidRuntime(3050):     at com.example.project.MainActivity.onResume(MainActivity.java:106)
02-23 01:18:27.217: E/AndroidRuntime(3050):     at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1257)
02-23 01:18:27.217: E/AndroidRuntime(3050):     at android.app.Activity.performResume(Activity.java:6076)
02-23 01:18:27.217: E/AndroidRuntime(3050):     at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2978)
02-23 01:18:27.217: E/AndroidRuntime(3050):     ... 11 more
02-23 01:18:27.177:E/SQLiteLog(3050):(1)靠近“WHERE”:语法错误
02-23 01:18:27.192:D/AndroidRuntime(3050):关闭虚拟机
02-23 01:18:27.217:E/AndroidRuntime(3050):致命异常:主
02-23 01:18:27.217:E/AndroidRuntime(3050):进程:com.example.project,PID:3050
02-23 01:18:27.217:E/AndroidRuntime(3050):java.lang.RuntimeException:无法恢复活动{com.example.project/com.example.project.MainActivity}:android.database.sqlite.SQLiteException:接近“WHERE”:语法错误(代码1):,编译时:从modulename=?或者modulename=?或者modulename=?其中moduleSelectureDate=?或者模块最小值=?
02-23 01:18:27.217:E/AndroidRuntime(3050):在android.app.ActivityThread.performResumeActivity(ActivityThread.java:2989)
02-23 01:18:27.217:E/AndroidRuntime(3050):位于android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3020)
02-23 01:18:27.217:E/AndroidRuntime(3050):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2395)
02-23 01:18:27.217:E/AndroidRuntime(3050):在android.app.ActivityThread.access$800(ActivityThread.java:151)
02-23 01:18:27.217:E/AndroidRuntime(3050):在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
02-23 01:18:27.217:E/AndroidRuntime(3050):在android.os.Handler.dispatchMessage(Handler.java:102)上
02-23 01:18:27.217:E/AndroidRuntime(3050):在android.os.Looper.loop(Looper.java:135)上
02-23 01:18:27.217:E/AndroidRuntime(3050):位于android.app.ActivityThread.main(ActivityThread.java:5257)
02-23 01:18:27.217:E/AndroidRuntime(3050):位于java.lang.reflect.Method.invoke(本机方法)
02-23 01:18:27.217:E/AndroidRuntime(3050):位于java.lang.reflect.Method.invoke(Method.java:372)
02-23 01:18:27.217:E/AndroidRuntime(3050):在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
02-23 01:18:27.217:E/AndroidRuntime(3050):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
02-23 01:18:27.217:E/AndroidRuntime(3050):由以下原因引起:android.database.sqlite.SQLiteException:在“WHERE”附近:语法错误(代码1):,编译时:从modulename=?或者modulename=?或者modulename=?其中moduleSelectureDate=?或者模块最小值=?
02-23 01:18:27.217:E/AndroidRuntime(3050):在android.database.sqlite.SQLiteConnection.nativePrepareStatement(本机方法)
02-23 01:18:27.217:E/AndroidRuntime(3050):在android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889)
02-23 01:18:27.217:E/AndroidRuntime(3050):在android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500)
02-23 01:18:27.217:E/AndroidRuntime(3050):在android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
02-23 01:18:27.217:E/AndroidRuntime(3050):位于android.database.sqlite.SQLiteProgram.(SQLiteProgram.java:58)
02-23 01:18:27.217:E/AndroidRuntime(3050):位于android.database.sqlite.SQLiteQuery.(SQLiteQuery.java:37)
02-23 01:18:27.217:E/AndroidRuntime(3050):位于android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:44)
02-23 01:18:27.217:E/AndroidRuntime(3050):在android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1316)
02-23 01:18:27.217:E/AndroidRuntime(3050):位于android.database.sqlite.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1255)
02-23 01:18:27.217:E/AndroidRuntime(3050):位于com.example.project.DB.getModuleTime(DB.java:134)
02-23 01:18:27.217:E/AndroidRuntime(3050):在com.example.project.MainActivity.onResume(MainActivity.java:106)上
02-23 01:18:27.217:E/AndroidRuntime(3050):在android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1257)上
02-23 01:18:27.217:E/AndroidRuntime(3050):在android.app.Activity.performResume(Activity.java:6076)
02-23 01:18:27.217:E/AndroidRuntime(3050):在android.app.ActivityThread.performResumeActivity(ActivityThread.java:2978)
02-23 01:18:27.217:E/AndroidRuntime(3050):。。。还有11个
您的SQL有3个错误

1) 您需要将字符串常量放在引号中-“数字安全”

2) 你的where子句是错误的。它不是“x=7、10或11”。其“其中x=7或x=10或x=11”

3) 下半场也是错误的。你不能说“foo或bar=7”,你需要说“foo=7或bar=7”

你需要数字安全的引号('),所以“数字安全”是