我的代码如下:
public void saveOrderLists(final AbstractDao<Order, ?> dao,
final ArrayList<Order> list) {
if (list == null || list.isEmpty()) {
return;
}
dao.getSession().runInTx(new Runnable() {
@Override
public void run() {
for (int i = 0; i < list.size(); i++) {
Order order = list.get(i);
dao.insertOrReplaceInTx(order);
}
}
});
}
出现以下错误:
FATAL EXCEPTION: pool-3-thread-2
android.database.sqlite.SQLiteException: near "Order": syntax error: , while compiling: INSERT OR REPLACE INTO Order ('ID','ORDER_NUMBER','USER_ID','CREATE_TIME','CHECK_IN','CHECK_OUT','TITLE','AMOUNT','ORDER_STATUS') VALUES (?,?,?,?,?,?,?,?,?)
at android.database.sqlite.SQLiteCompiledSql.native_compile(Native Method)
at android.database.sqlite.SQLiteCompiledSql.<init>(SQLiteCompiledSql.java:78)
at android.database.sqlite.SQLiteProgram.compileSql(SQLiteProgram.java:143)
at android.database.sqlite.SQLiteProgram.compileAndbindAllArgs(SQLiteProgram.java:361)
at android.database.sqlite.SQLiteStatement.acquireAndLock(SQLiteStatement.java:271)
at android.database.sqlite.SQLiteStatement.executeInsert(SQLiteStatement.java:123)
at de.greenrobot.dao.AbstractDao.executeInsert(AbstractDao.java:348)
at de.greenrobot.dao.AbstractDao.insertOrReplace(AbstractDao.java:332)
at com.yopark.logic.OrderLogic$4.onHttpRsp(OrderLogic.java:396)
at com.yopark.net.HttpClient.sendReq(HttpClient.java:88)
at com.yopark.net.NetMgr$1.run(NetMgr.java:43)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
at java.lang.Thread.run(Thread.java:856)
最佳答案
dao.insertOrReplaceInTx(order);
上述方法将列表作为参数,而您传递的是单个对象。使用 insertOrReplace(object) 或将您获取的列表作为参数传递。
dao.insertOrReplaceInTx(list);
关于android - 在使用开源数据库工具greenDao时出现SQLiteException,望高手给予,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27354702/