作者liu2007 (薯)
看板java
標題[問題] JDBC 出現 database is locked的錯誤
時間Sun Aug 25 13:38:04 2019
※狀況概述:
之前開始學習使用JDBC
也寫了一個程式出來能夠順利寫入與讀取
今天又寫了一個新的,對於建立Table與寫入的方式基本上都沒變
可是不知道為什麼卻跑出database is locked的訊息
我的程式也沒沒用多線程
DB Browser也關掉了
程式裡連續建立三個Table也沒問題
想不明白為什麼會被Lock住
除蟲了好久還是除不了
只好上來求救.....
這個程式只是把丟進來的LinkedList的每個元素裡的資料寫入資料庫的程式
main 裡面對於我丟上來的這個class的動作
僅僅是new 出來,然後call insertGallery 這個方法
執行的時候程式卡在 insertGallery 方法裡的 stmt.execute(); 這行
※程式碼:
https://pastebin.com/r9DzjjV8
※錯誤訊息:
org.sqlite.SQLiteException: [SQLITE_BUSY] The database file is locked
(database is locked)
at org.sqlite.core.DB.newSQLException(DB.java:941)
at org.sqlite.core.DB.newSQLException(DB.java:953)
at org.sqlite.core.DB.execute(DB.java:854)
at
org.sqlite.jdbc3.JDBC3PreparedStatement.execute(JDBC3PreparedStatement.java:56)
at DataBase.insertGallery(DataBase.java:43)
at hello.scanningTags(hello.java:45)
at hello.main(hello.java:19)
※補充說明:
--
If a child on the street who has nothing is willing to share,
why are we who have everything still so greedy?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.192.227.117 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/java/M.1566711488.A.B17.html
※ 編輯: liu2007 (123.192.227.117 臺灣), 08/25/2019 13:38:35
1F:→ maxima: 1.你的連線沒有關過 con.close() 2. stmt也必須關閉 08/25 14:23
3F:→ maxima: 都加上 close 程式後再試看看? 而且我猜蜆仔卡住是因為沒 08/25 14:26
4F:→ maxima: 有關閉連線造成Exceptions 又沒有rollback 才會卡死table 08/25 14:26
5F:→ maxima: *現在 08/25 14:27
7F:→ liu2007: 感謝m大,我工作結束後回電腦前研究看看 08/25 14:36
感謝,真的是沒有close的關係,我以為只有connection要close
沒想到rs 和 stmt 也有close 以及其之必要
非常感謝
※ 編輯: liu2007 (123.192.227.117 臺灣), 08/25/2019 15:57:41
8F:推 GGing: 覺得 close 很煩可以考慮用 JdbcTemplate 08/29 06:17