我正在尝试使用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');
答案 0 :(得分:0)
问题是因为 TRANSACTION 是一个关键字,除非将其括起来/用引号引起来,否则不能用作表列(和其他项目)的名称。
假设已经创建了一个名为TRANSACTION的表(定义时必须将其括起来/引用),则可以使用以下其中一项:-
table
SQL As Understood By SQLite - SQLite Keywords
或者,表本身也可以重命名(这可能是更好的解决方案)。