首页
App
&
Coffee
文档
项目
分享
反馈
俱乐部
登录
注册
JFinal 在sqlite执行建表语句不成功
songsong123
2018-06-12 09:15
JFinal在Sqlite执行建表语句不成功,用原始的jdbc可以成功,不知道是什么问题
项目:
JFinal
评论区
JFinal
2018-06-12 10:09
代码、 sql 、异常信息一样都没有, 神仙也难猜了
回复
songsong123
2018-06-12 14:15
@JFinal
没有异常信息,控制台能打印出执行的SQL,但是数据库就是没有表
回复
songsong123
2018-06-12 14:16
@JFinal
String sql="DROP TABLE IF EXISTS `file_info`;"
+"CREATE TABLE 'file_info' ("
+"'id' INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,"
+"'name' TEXT(200),'path' TEXT(200));";
回复
JFinal
2018-06-12 15:25
@songsong123
去掉 sql 后面的分号, 每次只执行一条 sql
Db.update("DROP TABLE IF EXISTS `file_info`");
String sql = "CREATE TABLE 'file_info' ("
+"'id' INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,"
+"'name' TEXT(200),'path' TEXT(200))");
Db.update(sql);
JDBC 可以执行,而 jfinal 下不能执行,有可能是 druid 这类第三方对中间有分号的语句可能有所保护,防止 sql 注入
还有一个办法是用纯 JDBC 的方式获取一个 DataSource,然后将这个对象传入 ActiveRecordPlugin(dataSource), 这样的话中间就没有第三方了
jfinal 数据库操作在本质上就是 JDBC
回复
JFinal
2018-06-12 15:25
@songsong123
记得搞定后回来分享一下
回复
songsong123
2018-06-13 08:32
@JFinal
分开执行也一样没有效果,纯jdbc有表建起来,怀疑是druid屏蔽了DDL语句,不知道怎么配置
回复
JFinal
2018-06-13 09:25
@songsong123
用纯 JDBC 的 API 去创建一个 DataSource 对象,然后传给 ActiveRecordPlugin 构造方法,用这种方式去创建 ActiveRecordPlugin 对象
这样就跳过了 druid 了,应该可以
回复
发送
我要反馈
热门反馈
扫码入社