首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java - MySQL --> SQLite -无法使用java在SQLite数据库中插入

问Java - MySQL --> SQLite -无法使用java在SQLite数据库中插入
EN

Stack Overflow用户
提问于 2012-05-15 09:35:04
回答 2查看 1.8K关注 0票数 0

iv创建了一个可以与MySQL很好地协同工作的程序。但是,当我将它转换为SQLlite时,除了向表中插入值之外,一切都可以正常工作,比如创建表、数据库的getConnection()等。我无法使用Java (Netbeans) to SQLite数据库插入值到表中。我只能插入一行,而不能插入多行?在MySQL中,我可以一次插入多行,但是,在SQLite中我不能?

代码是(这只适用于一行):

代码语言:javascript
复制
       Connection con;
       Statement s= con.CreateStatement();
       String st = "Insert into table1 (10,'abc')";
       s.executeUpdate(st);
       s.close();

如果我做了这样的事情(在超过一行的情况下不起作用-不知道为什么- SQLite):

代码语言:javascript
复制
         Connection con;
         Statement s= con.CreateStatement();
         String st = "Insert into table1 (10,'abc'), (5,'vfvdv')"; //now it doesnt    work since Im inserting more than one row. I can't figure out what Im doing wrong - 
         //Iv also tried Insert into table1(ID, Name) values (10,'abc'), (5,'afb'); but it dont work.
        s.executeUpdate(st);
        s.close();

有没有java专家或者其他人可以帮我解决这个问题。我不知道我做错了什么,因为当我在'SQLite‘命令行中输入我的命令时,它对所有人都很有效。但是,在使用SQLite的JAVA中,由于某种原因,我只能更新一行?然而,除了SQLlite之外,Java和MySQL可以很好地工作。

任何人都可以澄清我做错了什么。非常感谢您阅读这篇文章和您的时间。

EN

回答 2

Stack Overflow用户

发布于 2012-05-15 09:44:38

SQLite驱动程序可能不支持多插入语法。这种语法也不是标准的,尽管许多数据库都支持它。

像这样执行多次插入的另一种选择是使用PreparedStatement的批处理机制。

代码语言:javascript
复制
Connection conn = ....;
PreparedStatement stmt = 
  conn.prepareStatement("INSERT INTO table1(id, name) VALUES (?, ?)");

stmt.setInt(1, 10);
stmt.setString(2, "abc");
stmt.addBatch();

stmt.setInt(1, 5);
stmt.setString(2, "vfvdv");
stmt.addBatch();

stmt.executeBatch();

通常,您会在循环中使用setInt、setString、addBatch序列,而不是像我在这里展示的那样展开,并在循环之后调用executeBatch。这将适用于所有兼容JDBC的数据库。

票数 2
EN

Stack Overflow用户

发布于 2012-05-15 09:43:19

根据SQL92标准,多行插入不是标准的。

SQLite从版本3.7.11开始支持它。

如果你在这个版本下有一个版本,你需要为每一行做一次插入...

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10593132

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档