[英]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.