JDBC:批量插入不向数据库插入值

时间:2016-10-17 09:43:51

标签: java mysql sql jdbc

我必须使用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));

没有任何异常被抛出,但没有插入任何值。有人可以解释一下吗?

3 个答案:

答案 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'
);

并为您的代码添加提交