簡體   English   中英

JDBC:批量插入未將值插入數據庫

[英]JDBC : Batch insert not inserting value to database

我必須使用我要為其執行批處理語句的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));

不會在任何地方引發異常,但不會插入任何值。 有人可以解釋嗎?

大多數JDBC驅動程序使用autocommit ,但其中一些不使用。 如果不知道,則應在事務之前使用.setAutoCommit(true)或在事務之后使用.commit()

可能是交易問題。 也許您不提交交易? 如果是這樣,那么在數據庫中看不到任何東西是正常的。

您可以通過在.executeBatch();之后.executeBatch();以READ_UNCOMMITTED事務模式運行客戶端來檢查是否存在這種情況.executeBatch(); (但在close()之前),看看是否有任何行。

您不應該為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'
);

並添加提交到您的代碼

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM