编译插入到TRANSACTION语法错误代码1附近

时间:2018-10-30 18:30:37

标签: java android sqlite

我正在尝试使用SQLite将事务放入表中,但是不知何故我无法使其正常运行,始终出错,我已经检查了语法,但idk导致了错误。这是源代码。

public class Database extends SQLiteAssetHelper {
    private static final String DB_NAME = "ifa.db";
    private static final int DB_VER=1;
    public Database(Context context){
        super(context, DB_NAME,null,DB_VER);
    }

    public void addToTransaction(Transaction transaction)
    {
        SQLiteDatabase db = getReadableDatabase();
        String query = String.format("INSERT INTO TRANSACTION(date,companyname,itemname,itemtotal,itemprice,grandtotal,itemleft) VALUES('%s','%s','%s','%s','%s','%s','%s');",
                transaction.getDate(),
                transaction.getCompanyname(),
                transaction.getItemname(),
                transaction.getItemtotal(),
                transaction.getItemprice(),
                transaction.getGrandtotal(),
                transaction.getItemleft());
        db.execSQL(query);
    }
}

这是我得到的报告

Process: com.example.crz.ifa, PID: 11831
    android.database.sqlite.SQLiteException: near "TRANSACTION": syntax error (code 1): , while compiling: INSERT INTO TRANSACTION(date,companyname,itemname,itemtotal,itemprice,grandtotal,itemleft) VALUES('14-11-2018','test','pen','2','5000','10000','50');

1 个答案:

答案 0 :(得分:0)

问题是因为 TRANSACTION 是一个关键字,除非将其括起来/用引号引起来,否则不能用作表列(和其他项目)的名称。

假设已经创建了一个名为TRANSACTION的表(定义时必须将其括起来/引用),则可以使用以下其中一项:-

table

SQL As Understood By SQLite - SQLite Keywords

或者,表本身也可以重命名(这可能是更好的解决方案)。