2015-03-13 71 views
0

我有一些麻煩連接我的Java腳本到我的SQLite3數據庫。Java SQLite3連接失敗

我有我的目錄握着我的腳本其次

C:/PROG/JavaPROG/programs/java_database 

這個目錄裏,我有3個文件

Query.java, Query.class and the database query.db 

我的Java代碼看起來其次

import java.sql.*; 

public class Query3 { 

    public static void main(String[] args) { 

     Connection conn = null; 

     try { 
      Class.forName("org.sqlite.JDBC"); 
      conn = DriverManager.getConnection("jdbc:sqlite:C:/PROG/JavaPROG/programs/java_database/query.db"); 
      System.out.println("Connection Success"); 
     } catch(Exception log) { 
      System.out.println("Connection Failed: " + log); 
     } 

    } 

} 

我的類路徑呢包含

C:\Program Files\Java\jdk1.8.0\bin 

和bin目錄裏面的sqlite的jdbc驅動

sqlite-jdbc-3.7.2.jar 

我可以在我的腳本連接到PostgreSQL數據庫,但我不明白爲什麼它沒有連接到SQLite3的,我得到的以下錯誤信息

java.lang.ClassNotFoundException: org.sqlite.JDBC 

我做錯了什麼?

+0

「我有一些麻煩的連接我的Java腳本」。這就是你所說的。 JavaScript在哪裏?順便說一句,你嘗試谷歌。閱讀這個問題的大多數人會從那裏給你答案。沒有人記得這樣的東西。作爲一名開發人員,知道如何在Google上找到答案能夠保持良好的工作生活平衡。 – CKing 2015-03-13 15:29:52

+0

的JavaScript?你失去了我的機器人嗎? – Trent 2015-03-13 15:31:23

+0

哦,我明白了,我的意思是用java編寫的腳本,而不是實際的JavaScript。我GOOGLE了它雖然一切都一直說,sqlite的jdbc驅動程序丟失,但我敢肯定它在我的類路徑,所以我只是看到如果任何人知道任何其他事情,而我繼續搜索 – Trent 2015-03-13 15:35:40

回答

-1

我找到了解決這個問題的答案。

編譯腳本正常

javac Query.java 

然後執行

java -classpath ".;sqlite-jdbc-3.7.2.jar" Query 

時指定驅動程序,它會運行良好

+0

我已經在我的回答中介紹了這一點。您的答案不會添加任何我尚未涉及的新內容。我想你錯過了我答案的最後一行?順便說一句,你的javac命令不可能沒有classpath選項,但java命令需要classpath選項。你能解釋一下如何在不給類路徑的情況下編譯? – CKing 2015-03-13 16:42:46

+0

javac命令完美地編譯程序,正如我在我的問題中所說的,jdbc驅動程序已經在路徑中。當我使用Java命令運行腳本時,它忽略了驅動程序,因此我在運行該程序時也需要包含驅動程序,您的答案沒有錯,但它添加了一個不必要的javac -cp步驟,並且沒有100%清除。感謝您的幫助,因爲它幫助我查看其他選項 – Trent 2015-03-14 14:47:44

+0

jdbc驅動程序不在您的路徑中。 jdbc驅動程序所在的文件夾位於您的路徑中。這應該不起作用,因爲在使用javac時,在路徑中沒有查找jar文件。如果java需要類路徑,那麼javac也需要它。 – CKing 2015-03-14 14:52:19

1

您需要在類路徑中明確提供sqlite-jdbc-3.7.2.jar文件,同時使用-cp選項編譯和運行類。 java和javac命令只會在classpath中查找.class文件,而不是jar。

試試這個:

javac -cp <path_to_jar/sqlite-jdbc-3.7.2.jar>;. <your_class_name>.java

如果你有一個以上的第三方庫,你可以使用通配符:

javac -cp <path_to_jar/*>;. <your_class_name>.java

注意;是Windows使用的分隔。如果您使用的是基於unix的系統,則需要使用:而不是;。 Java可能是獨立平臺,但java和javac命令不是。

還要注意的是.告訴Java和javac命令在上課當前目錄中查找。使用java命令運行程序時,請不要忘記將類路徑提供給jar。

+0

whaaat這是忙碌,像javac Query.java -cp sqlite-jdbc-3.7.2.jar? – Trent 2015-03-13 15:45:37

+0

@Trent看我的編輯。讓我知道你是否需要更多的投入。如果不是,請不要忘記接受答案。 – CKing 2015-03-13 15:49:13

+0

恐怕它沒有工作,但我真的很感激你的幫助,我會繼續搜索:'{ – Trent 2015-03-13 16:04:11