如何将 SQLite 与 Java 连接起来?
Posted
技术标签:
【中文标题】如何将 SQLite 与 Java 连接起来?【英文标题】:How to connect SQLite with Java? 【发布时间】:2010-12-04 06:29:32 【问题描述】:我正在使用一个简单的代码从 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 jar 放在类路径中 【参考方案1】:您的类路径中需要有一个 SQLite JDBC 驱动程序。
Taro L. Saito (xerial) 分叉了 Zentus 项目,现在以 sqlite-jdbc 的名义维护它。它捆绑了主要平台的原生驱动程序,因此您无需单独配置它们。
【讨论】:
我正在使用这个驱动程序,并且工作正常。但是为什么它在创建时没有压缩数据库。使用 FireFox sqlite 插件数据库从 11.5MB 压缩到 11.3MB。如何用 java 做到这一点。 @Dyapa 你需要定期运行VACUUM
;因为 JDBC 实际上并没有解释 SQL(出于非常充分的理由),所以只需将其发送过来。或者对每个连接使用编译指示以在自动真空模式下运行。
@DonalFellows 可以解释一下如何通过 java 运行 VACUUM。
对于 Tomcat 遇到此问题的用户,需要将此 jar 放入相应 Tomcat 版本的 lib 文件夹中。 Tomcat 也需要重新启动。在 Web 应用程序中,jar 也需要放入 WEB-INF lib 文件夹中。您不需要将其添加到构建路径中,因为将其放在 WEB-INF lib 文件夹中会自动将其放置在那里。
@androidAddict 谢谢兄弟,你节省了我的时间 :)【参考方案2】:
如果您使用的是 netbeans 下载 sqlitejdbc driver 右键单击 Project 窗口中的 Libraries 文件夹,然后选择 Add Library , 然后点击创建按钮输入库名称(SQLite)并点击确定
您必须将 sqlitejdbc 驱动程序添加到类路径中,单击 添加 Jar/Folder.. 按钮并选择您之前下载的 sqlitejdbc 文件 点击确定,您就可以开始了!
【讨论】:
因为这个问题我很挣扎。我是 Java 新手并使用 Netbeans。这是一种挫败感。最后,你的回答拯救了我的一天。【参考方案3】:如果您使用Netbeans
,则使用Maven
添加库更容易。我尝试过使用上述解决方案,但没有成功。
<dependencies>
<dependency>
<groupId>org.xerial</groupId>
<artifactId>sqlite-jdbc</artifactId>
<version>3.7.2</version>
</dependency>
</dependencies>
我添加了Maven
依赖,java.lang.ClassNotFoundException: org.sqlite.JDBC
错误消失了。
【讨论】:
【参考方案4】:我正在使用 Eclipse,我复制了您的代码并得到了同样的错误。然后我打开了项目属性-> Java 构建路径-> 库-> 添加外部 JAR... c:\jrun4\lib\sqlitejdbc-v056.jar 像魅力一样工作。如果您刚刚复制了 .jar 文件,您可能需要重新启动 Web 服务器。
【讨论】:
【参考方案5】: import java.sql.ResultSet;
import java.sql.SQLException;
import javax.swing.JOptionPane;
import org.sqlite.SQLiteDataSource;
import org.sqlite.SQLiteJDBCLoader;
public class Test
public static final boolean Connected()
boolean initialize = SQLiteJDBCLoader.initialize();
SQLiteDataSource dataSource = new SQLiteDataSource();
dataSource.setUrl("jdbc:sqlite:/home/users.sqlite");
int i=0;
try
ResultSet executeQuery = dataSource.getConnection()
.createStatement().executeQuery("select * from \"Table\"");
while (executeQuery.next())
i++;
System.out.println("out: "+executeQuery.getMetaData().getColumnLabel(i));
catch (SQLException ex)
JOptionPane.showMessageDialog(null, ex);
return initialize;
【讨论】:
我使用的是dataSource.setDatabaseName(...)
,但它不起作用。现在我看到我需要使用dataSource.setUrl(...)
。谢谢。 :-)【参考方案6】:
您必须下载 SQLite JDBC 驱动程序并将其添加到您的类路径中。 你可以从这里下载https://bitbucket.org/xerial/sqlite-jdbc/downloads
如果你使用 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");
【讨论】:
【参考方案7】:connection = DriverManager.getConnection("jdbc:sqlite:D:\\testdb.db");
而不是这个放
connection = DriverManager.getConnection("jdbc:sqlite:D:\\testdb");
【讨论】:
【参考方案8】:嘿,我在 youtube 上发布了一个关于此的视频教程,你可以检查一下,你可以在这里找到示例代码:
http://myfundatimemachine.blogspot.in/2012/06/database-connection-to-java-application.html
【讨论】:
它有很多不相关的代码来了解一个相对具体的问题。不是说它的视频/代码不好,但不是针对这个问题。【参考方案9】:import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import javax.swing.JOptionPane;
public class Connectdatabase
Connection con = null;
public static Connection ConnecrDb()
try
//String dir = System.getProperty("user.dir");
Class.forName("org.sqlite.JDBC");
Connection con = DriverManager.getConnection("jdbc:sqlite:D:\\testdb.db");
return con;
catch(ClassNotFoundException | SQLException e)
JOptionPane.showMessageDialog(null,"Problem with connection of database");
return null;
【讨论】:
以上是关于如何将 SQLite 与 Java 连接起来?的主要内容,如果未能解决你的问题,请参考以下文章
如何将 SQlite 数据库连接到 devcpp? [关闭]