iv创建了一个可以与MySQL很好地协同工作的程序。但是,当我将它转换为SQLlite时,除了向表中插入值之外,一切都可以正常工作,比如创建表、数据库的getConnection()等。我无法使用Java (Netbeans) to SQLite数据库插入值到表中。我只能插入一行,而不能插入多行?在MySQL中,我可以一次插入多行,但是,在SQLite中我不能?
代码是(这只适用于一行):
Connection con;
Statement s= con.CreateStatement();
String st = "Insert into table1 (10,'abc')";
s.executeUpdate(st);
s.close();如果我做了这样的事情(在超过一行的情况下不起作用-不知道为什么- SQLite):
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可以很好地工作。
任何人都可以澄清我做错了什么。非常感谢您阅读这篇文章和您的时间。
发布于 2012-05-15 09:44:38
SQLite驱动程序可能不支持多插入语法。这种语法也不是标准的,尽管许多数据库都支持它。
像这样执行多次插入的另一种选择是使用PreparedStatement的批处理机制。
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的数据库。
发布于 2012-05-15 09:43:19
根据SQL92标准,多行插入不是标准的。
SQLite从版本3.7.11开始支持它。
如果你在这个版本下有一个版本,你需要为每一行做一次插入...
https://stackoverflow.com/questions/10593132
复制相似问题