2017-11-11 118 views
1

我正在編寫一個程序,使用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

回答

-2

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意味着此驅動程序不在類路徑中。換句話說,你根本沒有解決這個問題。 –

相關問題