[問題] 初學連結資料庫發生錯誤

看板java作者 (那年夏天)時間15年前 (2010/12/27 15:07), 編輯推噓0(006)
留言6則, 3人參與, 最新討論串1/1
以下是一段從網路上找到的範例程式 範例原本會輸出 ID Name PASSWORD 1 yku 12356 2 yku2 7890 可是我執行的時候跑出以下異常 想請版上的高手幫忙看是哪方面出了錯誤 編輯環境 Eclipse jdk1.6.0_23 hsqldb-2.0.1-rc3 win7 32bit 程式碼 package db; //import org.hsqldb.jdbcDriver; import java.sql.*; public class Ooo { private Connection con = null; //Database objects private Statement stat = null; private ResultSet rs = null; private PreparedStatement pst = null; private String dropdbSQL = "DROP TABLE User "; private String createdbSQL = "CREATE TABLE User (" + " id INTEGER " + " , name VARCHAR " + " , passwd VARCHAR)"; private String insertdbSQL = "insert into User(id,name,passwd) " + "select nvl(max(id),0)+1,?,? FROM User"; private String selectSQL = "select * from User "; public Ooo() { try { Class.forName("org.hsqldb.jdbcDriver"); con = DriverManager.getConnection("jdbc:hsqldb:file:c:/database" , "SA", ""); } catch(ClassNotFoundException e) { System.out.println("DriverClassNotFound :"+e.toString()); } catch(SQLException x) { System.out.println("Exception :"+x.toString()); } } public void createTable() { try { stat = con.createStatement(); stat.executeUpdate(createdbSQL); } catch(SQLException e) { System.out.println("CreateDB Exception :" + e.toString()); } finally { Close(); } } public void insertTable( String name,String passwd) { try { pst = con.prepareStatement(insertdbSQL); pst.setString(1, name); pst.setString(2, passwd); pst.executeUpdate(); } catch(SQLException e) { System.out.println("InsertDB Exception :" + e.toString()); } finally { Close(); } } public void dropTable() { try { stat = con.createStatement(); stat.executeUpdate(dropdbSQL); } catch(SQLException e) { System.out.println("DropDB Exception :" + e.toString()); } finally { Close(); } } public void SelectTable() { try { stat = con.createStatement(); rs = stat.executeQuery(selectSQL); System.out.println("ID\t\tName\t\tPASSWORD"); while(rs.next()) { System.out.println(rs.getInt("id")+"\t\t"+ rs.getString("name")+"\t\t"+rs.getString("passwd")); } } catch(SQLException e) { System.out.println("DropDB Exception :" + e.toString()); } finally { Close(); } } private void Close() { try { if(rs!=null) { rs.close(); rs = null; } if(stat!=null) { stat.close(); stat = null; } if(pst!=null) { pst.close(); pst = null; } } catch(SQLException e) { System.out.println("Close Exception :" + e.toString()); } } public void shutdown() { try { stat = con.createStatement(); stat.execute("SHUTDOWN"); // if there are no other open connection } catch(java.sql.SQLException e) { System.out.println(e.toString()); } finally { Close(); if(con!=null) { try { con.close(); } catch(java.sql.SQLException e) { System.out.println(e.toString()); } con = null; } } } public static void main(String[] args) { Ooo test = new Ooo(); test.dropTable(); test.createTable(); test.insertTable("yku", "12356"); test.insertTable("yku2", "7890"); test.SelectTable(); test.shutdown(); } } ============================================ 錯誤訊息 DropDB Exception :java.sql.SQLException: user lacks privilege or object not found: USER in statement [DROP TABLE User ] CreateDB Exception :java.sql.SQLException: length must be specified in type definition: VARCHAR InsertDB Exception :java.sql.SQLException: user lacks privilege or object not found: USER InsertDB Exception :java.sql.SQLException: user lacks privilege or object not found: USER DropDB Exception :java.sql.SQLException: user lacks privilege or object not found: USER -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 120.127.47.200 ※ 編輯: i002149 來自: 120.127.47.200 (12/27 15:08)

12/27 15:44, , 1F
你看了錯誤訊息之後有什麼想法?
12/27 15:44, 1F

12/27 16:14, , 2F
好像少了什麼物件 或者是使用者沒有權限
12/27 16:14, 2F

12/27 19:46, , 3F
錯誤訊息講得很明顯喔 ._. 快接近了
12/27 19:46, 3F
其實我沒有修過資料庫,但自JAVA期末專題老師又硬要我們連上資料庫,所以有些概念真 的不是很清楚,手邊有借了資料庫的書,但是是以MYSQL為例,所以有些地方不太一樣, 希望你們能夠幫忙...我也會繼續翻書找資料,感謝.. ※ 編輯: i002149 來自: 61.224.48.4 (12/27 20:05)

12/27 20:09, , 4F
換了一台電腦跑 順利跑出來了 但還是不知道原因...
12/27 20:09, 4F

12/27 20:14, , 5F
你原本那台電腦(的登入帳號),有權限寫入 C:\ 嗎?
12/27 20:14, 5F

12/27 20:17, , 6F
應該也是有權限...已經系統管理者登入...
12/27 20:17, 6F
文章代碼(AID): #1D63iQ4o (java)