找不到适用于jdbc.sqlite的驱动程序,更复杂

问题描述:

我正在编写一个程序,使用java和SQLite连接到数据库。我尝试过任何我遇到过的东西,但似乎没有任何帮助。 的代码看起来是这样的:找不到适用于jdbc.sqlite的驱动程序,更复杂

import java.sql.Connection; 
    import java.sql.DriverManager; 
    import java.sql.SQLException; 
    import org.sqlite.JDBC; 

    /** 
    * 
    * @author sqlitetutorial.net 
    */ 

    @SuppressWarnings("unused") 
    public class SQLiteJDBCDriverConnection { 
     /** 
     * Connect to a sample database 
     */ 
     public static void connect() { 
      Connection conn = null; 
      try { 
       // db parameters 
       String url = "jdbc:sqlite:C:\\Users\\marks\\Desktop\\sqlite-tools-win32-x86-3180000\\SQLiteStudio\\chinook.db"; 
       // create a connection to the database 
       conn = DriverManager.getConnection(url); 

       System.out.println("Connection to SQLite has been established."); 

      } catch (SQLException e) { 
       System.out.println(e.getMessage()); 
      } finally { 
       try { 
        if (conn != null) { 
         conn.close(); 
        } 
       } catch (SQLException ex) { 
        System.out.println(ex.getMessage()); 
       } 
      } 
     } 
     /** 
     * @param args the command line arguments 
     */ 
     public static void main(String[] args) { 
      try { 
       Class.forName("org.sqlite.JDBC"); 
      } catch (ClassNotFoundException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
      connect(); 
     } 
    } 

而且我得到的错误是:

org.sqlite.JDBC 
    at java.net.URLClassLoader.findClass(Unknown Source) 
    at java.lang.ClassLoader.loadClass(Unknown Source) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) 
    at java.lang.ClassLoader.loadClass(Unknown Source) 
    at java.lang.Class.forName0(Native Method) 
    at java.lang.Class.forName(Unknown Source) 
    at SQLiteJDBCDriverConnection.main(SQLiteJDBCDriverConnection.java:42) 

The picture showing the driver

我遵循了http://www.sqlitetutorial.net/sqlite-java/sqlite-jdbc-driver/的具体步骤,它并没有为我工作!

我在Widows 10 64位上使用Eclipse Java Neon(最新版本)。

+1

您需要构建路径中的JDBC驱动程序。 –

+0

你如何运行你的应用程序。该错误表明您在运行时没有类路径上的SQLite JDBC驱动程序。 –

+0

该错误不完整,发布完整的堆栈跟踪。此外,为什么你继续连接,如果没有找到SQLite驱动程序类? – m0skit0

EDITED

由于您的教程节目,你只需要调用主空connect()方法。

public static void main(String[] args) { 
     connect(); 
} 

您正在尝试检索类Class.forName("org.sqlite.JDBC");,并且您稍后未使用它。

+1

他在主要方法中调用'connect()',我不知道这是如何解决问题的。问题中没有任何内容表明涉及到tomcat。把东西放在'%JAVA_HOME%/ lib'中是**不是**你应该如何处理Java的类路径问题。 –

+0

你是对的,我编辑答案,无论如何他试图搜索'org.sqlite.JDBC'类后调用连接。我确实认为他不需要检索这个类,它只是在那里失败。它在调用连接方法前崩溃 – maarkeez

+0

您的编辑使情况变得更糟,前缀为“jdbc:sqlite:'的连接字符串使用驱动程序”org.sqlite.JDBC“。虽然不再需要使用'Class.forName'来加载JDBC 4(或更高版本)的驱动程序,但这样做抛出ClassNotFoundException意味着此驱动程序不在类路径中。换句话说,你根本没有解决这个问题。 –