2009-12-24 51 views
0

这是我写的将代码保存到openoffice数据库中的代码。 但它给错误,我不理解它出现。不能给予特权...... OpenOffice的错误

package coop.data; 
import java.sql.*; 
/** 
* 
* @author spk 
*/ 
public class Connectionsetting { 

    private static Connection con; 

    private static Statement sm; 

    private static ResultSet rs; 

    public static void close() 
    { 
     try 
     { 
      sm.close(); 
      con.close(); 
     } 
     catch(Exception e) 
     { 
      e.printStackTrace(); 
     } 
    } 

    public void connection() { 
     String db_file_name_prefix = "/home/spk/Desktop/CooperHr/mydb.odb"; 
/* 
    If required change the file name if you are working in windows os 
    connection is in work 

*/ 
     try { 
      Class.forName("org.hsqldb.jdbcDriver"); 
      System.out.println("Driver Found"); 
      con=DriverManager.getConnection("jdbc:hsqldb:file"+db_file_name_prefix,"sa", ""); 
      System.out.println("Connection Eshtablished"); 
      // con.setAutoCommit(false); 
      sm=con.createStatement(); 
     // sm = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 

    public static int executeupdate(String query) { 
     //Execute & update block insert, update, delete statements 
     int bool = 0; 
     try { 
       bool=sm.executeUpdate(query); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 

      return bool; 
     } 

    public ResultSet executeQuery(String query) { 
     //Block Returns single resultset,,,sql statements such as sql select 
     ResultSet rs=null; 
     try { 
      rs = sm.executeQuery(query); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     return rs; 
    } 
    public boolean checkTableStatus(String tblName) { 
     String sql = "selec * from cat"; 

     ResultSet rs=null; 

     boolean status = false; 

     int i = 0; 

     String allTableNames[] = new String[20]; 
     try { 
      connection(); 
      rs = sm.executeQuery(sql); 
      while (rs.next()) { 

       allTableNames[i] = rs.getString(0); 
       i++; 

       if (allTableNames[i].equals(tblName)) { 
        status = true; 
        break; 
       } else { 
        status = false; 
        break; 
       } 
      } 

     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     return status; 
    } 
    public static void main(String []args) 
    { 
     String query,s1,s2,s3,s4,s5,s6,s7,s8; 
     Connectionsetting cn=new Connectionsetting(); 
     cn.connection(); 
     s1="same"; 
     s2="sam"; 
     s3="923847"; 
     s4="sam"; 
     s5="sam"; 
     s6="sam"; 
     s7="sam"; 
     s8="R01"; 
     query="insert into Agency_Master values("+s1+","+s2+","+s3+","+s4+","+s5+","+s6+","+s7+","+s8+")"; 
     cn.executeupdate(query); 



    } 

} 

这是error..I m到处它,当我试图将数据保存到数据库中 任何一个可以PLZ告诉我,我错了。

谢谢。

运行:

 
Driver Found 
Connection Eshtablished 
java.sql.SQLException: user lacks privilege or object not found: AGENCY_MASTER 
     at org.hsqldb.jdbc.Util.sqlException(Util.java:200) 
     at org.hsqldb.jdbc.JDBCStatement.fetchResult(JDBCStatement.java:1805) 
     at org.hsqldb.jdbc.JDBCStatement.executeUpdate(JDBCStatement.java:205) 
     at coop.data.Connectionsetting.executeupdate(Connectionsetting.java:52) 
     at coop.data.Connectionsetting.main(Connectionsetting.java:116) 
Caused by: org.hsqldb.HsqlException: user lacks privilege or object not found: AGENCY_MASTER 
     at org.hsqldb.Error.error(Error.java:76) 
     at org.hsqldb.SchemaManager.getTable(SchemaManager.java:510) 
     at org.hsqldb.ParserDQL.readTableName(ParserDQL.java:4367) 
     at org.hsqldb.ParserDML.compileInsertStatement(ParserDML.java:64) 
     at org.hsqldb.ParserCommand.compilePart(ParserCommand.java:132) 
     at org.hsqldb.ParserCommand.compileStatements(ParserCommand.java:83) 
     at org.hsqldb.Session.executeDirectStatement(Session.java:1037) 
     at org.hsqldb.Session.execute(Session.java:865) 
     at org.hsqldb.jdbc.JDBCStatement.fetchResult(JDBCStatement.java:1797) 
     ... 3 more 
BUILD SUCCESSFUL (total time: 0 seconds) 

回答

1

你的连接网址看起来前途未卜......尝试改变:

con=DriverManager.getConnection("jdbc:hsqldb:file"+db_file_name_prefix,"sa", ""); 

con=DriverManager.getConnection("jdbc:hsqldb:file:"+db_file_name_prefix+";ifexists=true","sa", ""); 

(加冒号 “文件” 后,和追加ifexists = true标志,如下所示:http://hsqldb.org/doc/guide/ch04.html

1

它在我看来像AGENCY_MASTER表不存在。您正试图执行update声明,并且它看起来像HSQLDB无法找到AGENCY_MASTER表。

你可以查看是否有HSQLDB内置的客户端/浏览器存在的表:

java -cp hsqldb.jar org.hsqldb.util.DatabaseManagerSwing