首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >打开Office数据库错误(运行时显示异常)

打开Office数据库错误(运行时显示异常)
EN

Stack Overflow用户
提问于 2009-12-28 13:01:18
回答 2查看 670关注 0票数 0
代码语言:javascript
复制
## This is the code i m runnig in linux ubuntu.. ##
import java.sql.*;
/**
 *
 * @author spk
 */
public class Connectionsetting {

    private static Connection con;

    private static java.sql.Statement sm;

    private static ResultSet rs;

    public void close()
    {
        try
        {
            sm.close();
            con.close();
        }
        catch(SQLException e)
        {
            System.out.println(e.getMessage());
        }
    }
    public void connection() {
       String db_file_name_prefix = "/home/spk/Desktop/database/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");
        }
            catch(ClassNotFoundException e){
            System.out.println(e.getMessage());
            }
             try {
                        //con=DriverManager.getConnection("jdbc:hsqldb:file"+db_file_name_prefix,"sa", "");
              con=DriverManager.getConnection("jdbc:hsqldb:file:"+db_file_name_prefix,"", "");
            System.out.println("Connection Eshtablished");


            sm=con.createStatement();
       // sm = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
        } catch (SQLException e) {
           System.out.println(e.getMessage());
        }
    }

    public static int executeupdate(String query) {
        //Execute & update block insert, update, delete statements
        int bool = 0;
        try {
                bool=sm.executeUpdate(query);
                con.commit();
            } 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;
      int i=0;
       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+")";
       i=cn.executeupdate(query);

       System.out.println(i);


    }

}

但是它又给出了这个错误..谁能告诉我wrong.the数据库在哪里是开放的办公基地谢谢

代码语言:javascript
复制
Driver Found
Exception in thread "main" java.lang.NoClassDefFoundError: org.hsqldb.jdbc.JDBCConnection
   at java.lang.Class.initializeClass(libgcj.so.90)
   at org.hsqldb.jdbc.JDBCDriver.getConnection(JDBCDriver.java:285)
   at org.hsqldb.jdbc.JDBCDriver.connect(JDBCDriver.java:245)
   at java.sql.DriverManager.getConnection(libgcj.so.90)
   at java.sql.DriverManager.getConnection(libgcj.so.90)
   at Connectionsetting.connection(Connectionsetting.java:45)
   at Connectionsetting.main(Connectionsetting.java:116)
Caused by: java.lang.ClassNotFoundException: java.sql.Wrapper not found in gnu.gcj.runtime.SystemClassLoader{urls=[file:/home/COOPERENG/spk/workspace/Test/,file:/home/COOPERENG/spk/workspace/hsqldb.jar], parent=gnu.gcj.runtime.ExtensionClassLoader{urls=[], parent=null}}
   at java.net.URLClassLoader.findClass(libgcj.so.90)
   at gnu.gcj.runtime.SystemClassLoader.findClass(libgcj.so.90)
   at java.lang.ClassLoader.loadClass(libgcj.so.90)
   at java.lang.ClassLoader.loadClass(libgcj.so.90)
   at java.lang.VMClassLoader.defineClass(libgcj.so.90)
   at java.lang.ClassLoader.defineClass(libgcj.so.90)
   at java.security.SecureClassLoader.defineClass(libgcj.so.90)
   at java.net.URLClassLoader.findClass(libgcj.so.90)
   at gnu.gcj.runtime.SystemClassLoader.findClass(libgcj.so.90)
   at java.lang.ClassLoader.loadClass(libgcj.so.90)
   at java.lang.ClassLoader.loadClass(libgcj.so.90)
   at java.lang.Class.forName(libgcj.so.90)
   at java.lang.Class.initializeClass(libgcj.so.90)
   ...6 more
EN

回答 2

Stack Overflow用户

发布于 2009-12-28 13:25:26

当然,您还没有在应用程序类路径中加载HSQL数据库,并且您的连接字符串看起来不正确。

添加openoffice lib目录中的HSQL数据库驱动程序jar,并遵循此post

您可以直接参考HSQL documentation

票数 1
EN

Stack Overflow用户

发布于 2009-12-28 22:23:29

原因: java.lang.ClassNotFoundException:在gnu.gcj.runtime.SystemClassLoader中找不到java.sql.Wrapper

GNU JDK是出了名的buggy。去掉GNU JDK并安装Sun JDK

也就是说,您的JDBC代码编写得很差。它不是threadsafe,并且有潜在的资源泄漏。您应该在方法块中声明所有外部资源,而不是将其声明为静态变量。您应该在完全相同的try/finally块中获取和关闭资源。要了解如何正确处理JDBC,您可能会发现this article很有用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1968042

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档