[問題] JDBC 出現 database is locked的錯誤

看板java作者 (薯)時間5年前 (2019/08/25 13:38), 5年前編輯推噓1(107)
留言8則, 3人參與, 5年前最新討論串1/1
※狀況概述: 之前開始學習使用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://www.ptt.cc/bbs/java/M.1566711488.A.B17.html ※ 編輯: liu2007 (123.192.227.117 臺灣), 08/25/2019 13:38:35

08/25 14:23, 5年前 , 1F
1.你的連線沒有關過 con.close() 2. stmt也必須關閉
08/25 14:23, 1F

08/25 14:25, 5年前 , 2F

08/25 14:26, 5年前 , 3F
都加上 close 程式後再試看看? 而且我猜蜆仔卡住是因為沒
08/25 14:26, 3F

08/25 14:26, 5年前 , 4F
有關閉連線造成Exceptions 又沒有rollback 才會卡死table
08/25 14:26, 4F

08/25 14:27, 5年前 , 5F
*現在
08/25 14:27, 5F

08/25 14:28, 5年前 , 6F

08/25 14:36, 5年前 , 7F
感謝m大,我工作結束後回電腦前研究看看
08/25 14:36, 7F
感謝,真的是沒有close的關係,我以為只有connection要close 沒想到rs 和 stmt 也有close 以及其之必要 非常感謝 ※ 編輯: liu2007 (123.192.227.117 臺灣), 08/25/2019 15:57:41

08/29 06:17, 5年前 , 8F
覺得 close 很煩可以考慮用 JdbcTemplate
08/29 06:17, 8F
文章代碼(AID): #1TOXx0iN (java)
文章代碼(AID): #1TOXx0iN (java)