我必须使用JDBC执行多个插入查询,我正在尝试执行批处理语句。在我的代码中一切正常但是当我尝试在表中看到值时,表是空的。 这是代码:
SessionImpl sessionImpl = (SessionImpl) getSessionFactory().openSession();
Connection conn = (Connection) sessionImpl.connection();
Statement statement = (Statement) conn.createStatement();
for (String query : queries) {
statement.addBatch(query);
}
statement.executeBatch();
statement.close();
conn.close();
和
List<String> queries
包含插入查询,如:
insert into demo values (null,'Sharmzad','10006','http://demo.com','3 Results','some values','$44.00','10006P2','No Ratings','No Reviews','Egypt','Duration: 8 hours','tour','Day Cruises');
表格结构如下:
create table demo ( ID INTEGER PRIMARY KEY AUTO_INCREMENT,supplierName varchar(200),supplierId varchar(200),supplierUrl varchar(200),totalActivities varchar(200),activityName varchar(200),activityPrice varchar(200),tourCode varchar(200),starRating varchar(200),totalReviews varchar(200),geography varchar(200),duration varchar(200),category varchar(200),subCategory varchar(200));
没有任何异常被抛出,但没有插入任何值。有人可以解释一下吗?
答案 0 :(得分:5)
大多数JDBC驱动程序使用autocommit
,但其中一些不使用.setAutoCommit(true)
。如果您不知道,则应在交易前使用.commit()
或在事后onClickItem
使用..
答案 1 :(得分:1)
可能是交易问题。也许你不承诺你的交易?如果是这样,那么通常不会在数据库中看到任何内容。
您可以通过在.executeBatch();
之后(但在close()
之前)以READ_UNCOMMITTED事务模式运行客户端来检查是否是这种情况,并查看是否有任何行。
答案 2 :(得分:1)
您不应该为ID添加供应所有其他列名称
的值 insert into demo
(
supplierName
,supplierId
,supplierUrl
,totalActivities
,activityName
,activityPrice
,tourCode
,starRating
,totalReviews
,geography
,duration
,category
,subCategory
)
values (
'Sharmzad'
,'10006'
,'http://demo.com'
,'3 Results'
,'some values'
,'$44.00'
,'10006P2'
,'No Ratings'
,'No Reviews'
,'Egypt'
,'Duration: 8 hours
','tour'
,'Day Cruises'
);
并为您的代码添加提交