要实现一个远程升级数据库的功能
首先读取网页上需要执行的语句然后利用android自带的SQL类执行Sql语句。
从服务器上读取到的信息如下:
Create TABLE IF NOT EXISTS sh_upgrade_test( [id_key] integer PRIMARY KEY AUTOINCREMENT ,[dict_id] varchar(20) NOT NULL ,[dict_name] varchar(40) NOT NULL ,[info_value] varchar(60) ,[remark] varchar(100) ); insert into sh_upgrade_test(dict_id, dict_name,info_value,remark) values('dbUpgradeTest','数据库版本更新测试','aaa','测试'); commit
客户端的执行代码:
// 开始事务
DataBaseUtils.beginTransaction();
for (int i = 0; i < sql.length; i++) {
// 将获取的信息进行截取,分割为数组
DataBaseUtils.exeSql(sql[i]);
}
// 设置事务为成功
DataBaseUtils.setTransactionSuccessful();
// 结束并且提交事务
DataBaseUtils.endTransaction();
运行,结果报错了。
错误信息如下:
01-24 01:23:32.284: E/AndroidRuntime(4285): android.database.sqlite.SQLiteException: cannot commit - no transaction is active: COMMIT;
做了些测试,发现错误地方,就是SQL语句中多了commit。删之,继续运行。
发现表可以被新建,但是数据却无法插入,继续测试排查,发现问题出现在该死的 ";"上。
删之,调试通过。