看板 java 關於我們 聯絡資訊
以下是一段從網路上找到的範例程式 範例原本會輸出 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)
tkcn:你看了錯誤訊息之後有什麼想法? 12/27 15:44
i002149:好像少了什麼物件 或者是使用者沒有權限 12/27 16:14
awert:錯誤訊息講得很明顯喔 ._. 快接近了 12/27 19:46
其實我沒有修過資料庫,但自JAVA期末專題老師又硬要我們連上資料庫,所以有些概念真 的不是很清楚,手邊有借了資料庫的書,但是是以MYSQL為例,所以有些地方不太一樣, 希望你們能夠幫忙...我也會繼續翻書找資料,感謝.. ※ 編輯: i002149 來自: 61.224.48.4 (12/27 20:05)
i002149:換了一台電腦跑 順利跑出來了 但還是不知道原因... 12/27 20:09
tkcn:你原本那台電腦(的登入帳號),有權限寫入 C:\ 嗎? 12/27 20:14
i002149:應該也是有權限...已經系統管理者登入... 12/27 20:17