Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SQLite3连接失败_Java_Database_Sqlite_Connect - Fatal编程技术网

Java SQLite3连接失败

Java SQLite3连接失败,java,database,sqlite,connect,Java,Database,Sqlite,Connect,我在将java脚本连接到SQLite3数据库时遇到一些问题 我有我的目录保存我的脚本,如下所示 C:/PROG/JavaPROG/programs/java_database import java.sql.*; public class Query3 { public static void main(String[] args) { Connection conn = null; try { Class.forName

我在将java脚本连接到SQLite3数据库时遇到一些问题

我有我的目录保存我的脚本,如下所示

C:/PROG/JavaPROG/programs/java_database
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);
        }

    }

}
在这个目录中,我有3个文件

Query.java, Query.class and the database query.db
我的java代码如下所示

C:/PROG/JavaPROG/programs/java_database
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

我做错了什么吗?

在使用
-cp
选项编译和运行类时,需要在类路径中显式提供
sqlite-jdbc-3.7.2.jar
文件。java和javac命令将只查找类路径中的.class文件,而不查找JAR

试试这个:

javac-cp。java

如果您有多个第三方库,则可以使用通配符:

javac-cp。java

注意,
是Windows中使用的分隔符。如果您在基于unix的系统上,则需要使用
而不是
。Java可能与平台无关,但Java和javac命令并非如此


还要注意,
告诉java和javac命令在当前目录中查找类。在使用
java
命令运行程序时,不要忘记提供JAR的类路径。

我找到了解决这个问题的答案

按正常方式编译脚本

javac Query.java
然后在执行时指定驱动程序

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

它会运行良好

“我在连接java脚本时遇到了一些问题”。这就是你说的。javascript在哪里?顺便说一句,你试过谷歌吗。大多数阅读这个问题的人都会从那里给你答案。没有人记得这样的事。作为一名开发人员,知道如何在谷歌上找到答案对于保持良好的工作与生活平衡有很大的帮助?你把我弄丢了机器人?哦,我明白了,我指的是用java编写的脚本,而不是实际的JavaScript。我用谷歌搜索过它,虽然所有的东西都在说sqlite jdbc驱动程序丢失了,但我确信它在我的类路径中,所以我只是在继续谷歌搜索的同时看看是否有人知道其他的东西。我在谷歌找到了很多东西,这些东西回答了在Netbeans工作的人的问题,Eclipse等,但我是从命令行编写代码的,所以我没有发现它们非常有用。嘿,bot,我找到了答案,并在下面发布了它,你非常接近了。这很忙,比如javac Query.java-cp sqlite-jdbc-3.7.2.jar?@Trent,请看我的编辑。如果您需要更多信息,请告诉我。如果没有,别忘了接受答案。我担心它不起作用,但我真的很感谢你的帮助,我会继续用谷歌搜索:'{@Trent不知道为什么它不起作用。这次你还是遇到了完全相同的错误还是新的错误?除了不把JAR放在类路径中之外,没有其他理由让你在问题中发布错误。同样的错误,我甚至把sqlite驱动程序放在了主classI已经在中介绍过的目录中我的答案。你的答案没有添加任何我尚未介绍过的新内容。我猜你错过了我答案的最后一行?顺便说一句,如果没有classpath选项,java命令不可能工作,但是java命令需要classpath选项。你能解释一下如何在不提供classpath的情况下进行编译吗Omand完美地编译了程序,正如我在问题中所说的,jdbc驱动程序已经在路径中。当我使用Java命令运行脚本时,它忽略了驱动程序,所以我在运行程序时也需要包含驱动程序。您的回答没有错,但它添加了一个不必要的javac-cp步骤,并且不是100%清楚。谢谢您r您的帮助,因为它帮助我查看了其他选项jdbc驱动程序不在您的路径中。jdbc驱动程序所在的文件夹在您的路径中。这不应该起作用,因为在使用javac时不会在路径中查找jar文件。如果java需要类路径,javac也应该需要它。如果是这样的话,我不知道,但它是一个一直都很好,只是从来没有运行过