android - SQLite 插入抛出语法异常

标签 android sqlite

我从 SQLite 收到这个错误,

near ",": syntax error (code 1):,编译时:

UPDATE OutfitItem 
SET outfit_img_relative_pos_x=?,clothing_item_ID=?,outfit_img_relative_pos_y=?,
outfit_img_relative_size_width=?,outfit_ID=?,outfit_img_relative_size_height=? 
WHERE (outfit_ID,clothing_item_ID) = (60,5)

有人可以帮我找出错误吗?

以下是编译后的代码...

// ---updates a outfitItem---
        public boolean update(long outfitID, long clothingItemID, double imgRelativePos_X, double imgRelativePos_Y,
                double imgRelativeSize_width, double imgRelativeSize_height)
        {
            ContentValues args = new ContentValues();
            args.put(KEY_OUTFIT_ID, outfitID);
            args.put(KEY_CLOTHING_ITEM_ID, clothingItemID);
            args.put(KEY_OUTFIT_IMAGE_RELATIVE_POS_X, imgRelativePos_X);
            args.put(KEY_OUTFIT_IMAGE_RELATIVE_POS_Y, imgRelativePos_Y);
            args.put(KEY_OUTFIT_IMAGE_RELATIVE_SIZE_WIDTH, imgRelativeSize_width);
            args.put(KEY_OUTFIT_IMAGE_RELATIVE_SIZE_HEIGHT, imgRelativeSize_height);
            return db.update(TABLE_NAME, args, "(" + KEY_OUTFIT_ID + "," + KEY_CLOTHING_ITEM_ID + ") = (" + outfitID
                    + "," + clothingItemID + ")", null) > 0;
        }

下面是创建表的代码,注意外键设置为on...

public static final String TABLE_NAME = "OutfitItem";

        public static final String TABLE_CREATE = "create table " + TABLE_NAME + "(" + KEY_OUTFIT_ID
                + " int not null REFERENCES " + Table_Outfit.TABLE_NAME + "(" + KEY_OUTFIT_ID + ") ON DELETE CASCADE,"
                + KEY_CLOTHING_ITEM_ID + " int not null REFERENCES " + Table_ClothingItem.TABLE_NAME + "("
                + KEY_CLOTHING_ITEM_ID + ") ON DELETE CASCADE, " + KEY_OUTFIT_IMAGE_RELATIVE_POS_X + " real not null, "
                + KEY_OUTFIT_IMAGE_RELATIVE_POS_Y + " real not null, " + KEY_OUTFIT_IMAGE_RELATIVE_SIZE_WIDTH
                + " real not null, " + KEY_OUTFIT_IMAGE_RELATIVE_SIZE_HEIGHT + " real not null, " + "primary key ("
                + KEY_OUTFIT_ID + "," + KEY_CLOTHING_ITEM_ID + "));";

最佳答案

您的问题出在您的 WHERE 子句中:

WHERE (outfit_ID,clothing_item_ID) = (60,5)

这不是有效的 SQL 语法。您需要使用带有 AND 连词的单独条件。

关于android - SQLite 插入抛出语法异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12689998/

相关文章:

android - 如何在 WebView 中使用 id 填充 HTML 输入中的值

sqlite - 在android模拟器中访问SQLite数据库

sql - 条件更新 sqlite 语句

node.js 套接字响应顺序和恢复套接字挂断

java - 预览xml布局文件,无需构建项目android studio

android - 在 Android 中使用 PeerConnection.createDataChannel()

java - 如何在屏幕中心创建一个透明的弯曲透明矩形?

android - 如何将 Linux C USB 读取转换为 Android?

java - 从 SQLite 打印下一行

sqlite - Sqlite3 ICU Extension 编译版