作者i002149 (那年夏天)
看板java
标题[问题] 初学连结资料库发生错误
时间Mon Dec 27 15:07:04 2010
以下是一段从网路上找到的范例程式
范例原本会输出
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)
1F:→ tkcn:你看了错误讯息之後有什麽想法? 12/27 15:44
2F:→ i002149:好像少了什麽物件 或者是使用者没有权限 12/27 16:14
3F:→ awert:错误讯息讲得很明显喔 ._. 快接近了 12/27 19:46
其实我没有修过资料库,但自JAVA期末专题老师又硬要我们连上资料库,所以有些概念真
的不是很清楚,手边有借了资料库的书,但是是以MYSQL为例,所以有些地方不太一样,
希望你们能够帮忙...我也会继续翻书找资料,感谢..
※ 编辑: i002149 来自: 61.224.48.4 (12/27 20:05)
4F:→ i002149:换了一台电脑跑 顺利跑出来了 但还是不知道原因... 12/27 20:09
5F:→ tkcn:你原本那台电脑(的登入帐号),有权限写入 C:\ 吗? 12/27 20:14
6F:→ i002149:应该也是有权限...已经系统管理者登入... 12/27 20:17