Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.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
如何将SQLite与Java连接?_Java_Sqlite_Jdbc_Classpath - Fatal编程技术网

如何将SQLite与Java连接?

如何将SQLite与Java连接?,java,sqlite,jdbc,classpath,Java,Sqlite,Jdbc,Classpath,我使用一个简单的代码从Java应用程序访问SQLite数据库。 我的代码是 import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; public class ConnectSQLite { public static void main(String[] args) {

我使用一个简单的代码从Java应用程序访问SQLite数据库。 我的代码是

 import java.sql.Connection;  
 import java.sql.DriverManager;  
 import java.sql.ResultSet;  
 import java.sql.Statement;  
 public class ConnectSQLite 
 {  
  public static void main(String[] args) 
  {  
     Connection connection = null;  
     ResultSet resultSet = null;  
     Statement statement = null;  

     try 
     {  
         Class.forName("org.sqlite.JDBC");  
         connection = DriverManager.getConnection("jdbc:sqlite:D:\\testdb.db");  
         statement = connection.createStatement();  
         resultSet = statement  
                 .executeQuery("SELECT EMPNAME FROM EMPLOYEEDETAILS");  
         while (resultSet.next()) 
         {  
             System.out.println("EMPLOYEE NAME:"  
                     + resultSet.getString("EMPNAME"));  
         }  
     } 
     catch (Exception e) 
     {  
         e.printStackTrace();  
     }
     finally 
     {  
         try 
         {  
             resultSet.close();  
             statement.close();  
             connection.close();  
         } 
         catch (Exception e) 
         {  
             e.printStackTrace();  
         }  
     }  
 }  
}  
但这段代码给出了一个例外,比如

java.lang.ClassNotFoundException: org.sqlite.JDBC

我如何解决这个问题,请帮助我。

您的类路径中需要一个SQLite JDBC驱动程序


Taro L.Saito(xerial)提出了Zentus项目,现在以该项目的名义进行维护。它捆绑了主要平台的本机驱动程序,因此您无需单独配置它们。

如果您使用的是netbeans,请下载 在“项目”窗口中的“库”文件夹上单击鼠标右键,然后选择“添加库”, 然后单击Create按钮输入库名称(SQLite)并点击OK

您必须将sqlitejdbc驱动程序添加到类路径中,单击 添加Jar/文件夹。。按钮并选择先前下载的sqlitejdbc文件
点击OK,你就可以出发了

我正在使用Eclipse,我复制了您的代码,并得到了相同的错误。然后我打开了项目属性->Java构建路径->库->添加外部JAR。。。 c:\jrun4\lib\sqlitejdbc-v056.jar 工作得很有魅力。如果刚刚复制了.jar文件,则可能需要重新启动web服务器

connection = DriverManager.getConnection("jdbc:sqlite:D:\\testdb.db");
而不是这个

connection = DriverManager.getConnection("jdbc:sqlite:D:\\testdb");

嘿,我在youtube上发布了一个视频教程,你可以检查一下,你可以在这里找到示例代码:


如果您使用的是
Netbeans
,那么使用
Maven
添加库就更容易了。我尝试过使用上述解决方案,但没有成功

<dependencies>
    <dependency>
      <groupId>org.xerial</groupId>
      <artifactId>sqlite-jdbc</artifactId>
      <version>3.7.2</version>
    </dependency>
</dependencies>

org.xerial
sqlite jdbc
3.7.2

我添加了
Maven
依赖项和
java.lang.ClassNotFoundException:org.sqlite.JDBC
错误消失。

您必须下载sqlite JDBC驱动程序并将其添加到类路径。
你可以从这里下载

如果使用Gradle,则只需添加SQLite依赖项:

dependencies {
    compile 'org.xerial:sqlite-jdbc:3.8.11.2'
} 
接下来要做的是初始化驱动程序:

try {
    Class.forName("org.sqlite.JDBC");
} catch (ClassNotFoundException eString) {
    System.err.println("Could not init JDBC driver - driver not found");
}

我猜您并没有将SQLite jar放在ClassPath中,我使用的是这个驱动程序,并且运行良好。但为什么不在创建时压缩数据库呢?使用FireFox sqlite插件,数据库从11.5MB压缩到11.3MB。如何使用java实现这一点。@Dyapa您需要定期运行
VACUUM
;由于JDBC实际上并不解释SQL(有很好的理由),所以只需将其发送过来即可。或者使用pragma per connection以自动真空模式运行。@DonalFellows您可以解释如何通过java运行真空。对于那些在Tomcat中遇到此问题的用户,需要将此jar放入相应Tomcat版本的lib文件夹中。Tomcat也需要重新启动。在web应用程序中,jar也需要放在web-INF库文件夹中。您不需要将其添加到生成路径,因为将其放在WEB-INF库文件夹中会自动将其放置在那里。@AndroidAdd谢谢您,兄弟,您节省了我的时间:)我为此问题付出了很多努力。我是一名Java新手,正在使用Netbeans。这是一种挫折。最后,你的答案救了我一天。对于一个相对具体的问题,要了解很多不相关的代码。不是说这是一个糟糕的视频/代码,但不是针对这个问题的。我使用的是
dataSource.setDatabaseName(…)
,但它不起作用。现在我知道我需要使用
dataSource.setUrl(…)
。谢谢。:-)
dependencies {
    compile 'org.xerial:sqlite-jdbc:3.8.11.2'
} 
try {
    Class.forName("org.sqlite.JDBC");
} catch (ClassNotFoundException eString) {
    System.err.println("Could not init JDBC driver - driver not found");
}