gpt4 book ai didi

java - 将java连接到sqlite的问题

转载 作者:搜寻专家 更新时间:2023-10-30 20:27:51 39 4
gpt4 key购买 nike

我已经通读了许多关于此主题的帖子,但没有一个能够解决我的问题。我使用的是 mac,我正在尝试将 java 项目连接到 sqlite,但遇到了一些问题。我已经成功连接到mysql到java。要连接 mysql,我必须将 mysql.jar 文件添加到我的 system/library/java/extensions 文件夹中。一旦我这样做了,它就会一帆风顺。我对 sqlite 并不幸运。我去了 xerial 并尝试使用他们的 sqlite jdbc,但是这样做在我运行它时产生了大量其他错误。

是否有一种简单的方法和一个简单的 jar 可以用来将 java 连接到 sqlite?类似于我上面为 mysql 描述的过程?

如果没有,谁能给我一些帮助。

感谢您的帮助!

这是我使用的代码:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class SQLiteJDBC
{
public static void main(String[] args) throws ClassNotFoundException
{
// load the sqlite-JDBC driver using the current class loader
Class.forName("org.sqlite.JDBC");

Connection connection = null;
try
{
// create a database connection
connection = DriverManager.getConnection("jdbc:sqlite:sample.db");
Statement statement = connection.createStatement();
statement.setQueryTimeout(30); // set timeout to 30 sec.

statement.executeUpdate("drop table if exists person");
statement.executeUpdate("create table person (id integer, name string)");
statement.executeUpdate("insert into person values(1, 'leo')");
statement.executeUpdate("insert into person values(2, 'yui')");
ResultSet rs = statement.executeQuery("select * from person");
while(rs.next())
{
// read the result set
System.out.println("name = " + rs.getString("name"));
System.out.println("id = " + rs.getInt("id"));
}
}
catch(SQLException e)
{
// if the error message is "out of memory",
// it probably means no database file is found
System.err.println(e.getMessage());
}
finally
{
try
{
if(connection != null)
connection.close();
}
catch(SQLException e)
{
// connection close failed.
System.err.println(e);
}
}
}
}

这些是我在使用 xerial jar 时收到的错误:

Exception in thread "main" java.lang.NoClassDefFoundError: org/sqlite/NativeDB at java.lang.ClassLoader$NativeLibrary.load(Native Method) at java.lang.ClassLoader.loadLibrary1(ClassLoader.java:1939) at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1864) at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1825) at java.lang.Runtime.load0(Runtime.java:792) at java.lang.System.load(System.java:1059) at org.sqlite.SQLiteJDBCLoader.loadNativeLibrary(SQLiteJDBCLoader.java:200) at org.sqlite.SQLiteJDBCLoader.extractAndLoadLibraryFile(SQLiteJDBCLoader.java:148) at org.sqlite.SQLiteJDBCLoader.loadSQLiteNativeLibrary(SQLiteJDBCLoader.java:249) at org.sqlite.SQLiteJDBCLoader.initialize(SQLiteJDBCLoader.java:65) at org.sqlite.core.NativeDB.load(NativeDB.java:53) at org.sqlite.core.CoreConnection.open(CoreConnection.java:136) at org.sqlite.core.CoreConnection.(CoreConnection.java:66) at org.sqlite.jdbc3.JDBC3Connection.(JDBC3Connection.java:21) at org.sqlite.jdbc4.JDBC4Connection.(JDBC4Connection.java:23) at org.sqlite.SQLiteConnection.(SQLiteConnection.java:44) at org.sqlite.JDBC.createConnection(JDBC.java:113) at org.sqlite.JDBC.connect(JDBC.java:87) at java.sql.DriverManager.getConnection(DriverManager.java:579) at java.sql.DriverManager.getConnection(DriverManager.java:243) at SQLiteJDBC.main(SQLiteJDBC.java:18) Caused by: java.lang.ClassNotFoundException: org.sqlite.NativeDB at java.net.URLClassLoader$1.run(URLClassLoader.java:366) at java.net.URLClassLoader$1.run(URLClassLoader.java:355) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:354) at java.lang.ClassLoader.loadClass(ClassLoader.java:423) at java.lang.ClassLoader.loadClass(ClassLoader.java:356) ... 21 more

这些是我在没有 xerial jar 的情况下收到的错误:

Exception in thread "main" java.lang.ClassNotFoundException: org.sqlite.JDBC at java.net.URLClassLoader$1.run(URLClassLoader.java:366) at java.net.URLClassLoader$1.run(URLClassLoader.java:355) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:354) at java.lang.ClassLoader.loadClass(ClassLoader.java:423) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) at java.lang.ClassLoader.loadClass(ClassLoader.java:356) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:186) at SQLiteJDBC.main(SQLiteJDBC.java:12)

最佳答案

也许您已经找到了答案,但以防万一。我有同样的问题,我的 mac 也有,我在 this other question 中找到了解决方案.总之,该 jar 不适合 mac,但您可以使用同一站点的 sqlite-jdbc-3.7.2.jar。希望对您有所帮助。

关于java - 将java连接到sqlite的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22393757/

39 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com