android.database.sqlite.SQLiteException : near "ON": syntax error (code 1):

标签 android sqlite syntax left-join

我在数据库中有两个表,我想使用 left-join 检索它们

 public Cursor readData()
    {
        Cursor c=database.rawQuery(" SELECT _id, i.Date, i.TimeIn_Info, i.TimeOut_Info, S.Image FROM " + MyDatabaseHelper.TABLE_INFO +"i LEFT JOIN"+MyDatabaseHelper.TABLE_STAFF_BENEFIT+" S ON S.Ts_id=i.ID WHERE i.Name = ?", new String[]{"XCV"}, null);

        if (c != null) {
            c.moveToFirst();
        }
        return c;
    }

但是,应用程序崩溃了。这是怎么回事?谢谢

LogCat 错误

 Process: com.example.project.myapplication, PID: 4861
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.project.myapplication/com.example.project.myapplication.MainActivity}: android.database.sqlite.SQLiteException: near "ON": syntax error (code 1): , while compiling: SELECT _id, i.Date, i.TimeIn_Info, i.TimeOut_Info, S.Image FROM Informationi LEFT JOINStaffBenefit S ON S.Ts_id=i.ID WHERE i.Name = ?
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2447)

表格信息

 db.execSQL("create table " + TABLE_INFO + " ( " + ID + " INTEGER PRIMARY KEY ,Name TEXT,Weather TEXT, Date DATETIME, Status Text, TimeIn_Info DATE TIME, TimeOut_Info DATETIME)");  //ID=_id

餐 table 员工福利

 db.execSQL("create table " + TABLE_STAFF_BENEFIT + "( "  + ID3 + " INTEGER PRIMARY KEY , Claim_Type TEXT, Image BLOB, Description TEXT , Amount TEXT, Ts_id INTEGER, FOREIGN KEY(Ts_id) REFERENCES "+TABLE_INFO+"(_id))"); //ID3=_id

LogCat

Caused by: android.database.sqlite.SQLiteException: ambiguous column name: _id (code 1): , while compiling: SELECT _id, i.Date, i.TimeIn_Info, i.TimeOut_Info, S.Image FROM Information i LEFT JOIN StaffBenefit S ON S.Ts_id=i._ID WHERE i.Name = ? 
at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)

最新查询

Cursor c=database.rawQuery(" SELECT _id, i.Date, i.TimeIn_Info, i.TimeOut_Info, S.Image FROM " + MyDatabaseHelper.TABLE_INFO + " i LEFT JOIN "+MyDatabaseHelper.TABLE_STAFF_BENEFIT+" S ON S.Ts_id=i._ID WHERE i.Name = ?", new String[]{"XCV"}, null);

最佳答案

标识符和关键字之间需要空格。特别是,替换

"i LEFT JOIN"

" i LEFT JOIN "

关于android.database.sqlite.SQLiteException : near "ON": syntax error (code 1):,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34261329/

相关文章:

python - 如何使用 SQLAlchemy 和 sqlite 查询 json 列表?

sql-server - SSMS 查询 - 如果数据库不存在,脚本将不会运行

java - 我可以静态导入私有(private)子类吗?

android - 使用 native CocosDenshion、cocos2d-x 循环播放音效时,AudioFlinger 无法创建音轨,状态为 : -12 ,

android - 具有支付集成的 Android 应用程序的数据库选择

android - 当我隐藏 ProgressBar 时动画不再工作

php - 从用 PHP 序列化的文本字符串反序列化 iOS 的关联数组?

perl - 将 Perl 的文件输入角度运算符重载为通用迭代器/生成器是否合适?

android - Cant parcel a recycled bitmap 错误

java - 通过 Glide 在 Activity 之间共享图像