[問題] 初學連結資料庫發生錯誤
以下是一段從網路上找到的範例程式
範例原本會輸出
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
12/27 20:14, 5F
→
12/27 20:17, , 6F
12/27 20:17, 6F