将java连接到sqlite的问题
我已经阅读了很多关于这个主题的帖子,但是没有一个能够解决我的问题。我使用mac,我试图将一个java项目连接到sqlite,但我遇到了一些问题。我已经成功地将mysql连接到java。为了连接mysql,我必须将一个mysql.jar文件添加到我的system/library/java/extensions文件夹中。有一次我做到了,一切都很顺利。我没有幸运地使用sqlite。我去了xerial并尝试使用他们的sqlite jdbc,但这样做会在运行时产生大量其他错误 有没有一个简单的方法和一个简单的jar可以用来连接java和sqlite?类似于我上面描述的mysql的过程 如果没有,谁能给我一些帮助 谢谢你的帮助 以下是我使用的代码:将java连接到sqlite的问题,java,database,sqlite,Java,Database,Sqlite,我已经阅读了很多关于这个主题的帖子,但是没有一个能够解决我的问题。我使用mac,我试图将一个java项目连接到sqlite,但我遇到了一些问题。我已经成功地将mysql连接到java。为了连接mysql,我必须将一个mysql.jar文件添加到我的system/library/java/extensions文件夹中。有一次我做到了,一切都很顺利。我没有幸运地使用sqlite。我去了xerial并尝试使用他们的sqlite jdbc,但这样做会在运行时产生大量其他错误 有没有一个简单的方法和一个简
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时收到的错误:
线程“main”java.lang.NoClassDefFoundError中出现异常:org/sqlite/NativeDB
位于java.lang.ClassLoader$NativeLibrary.load(本机方法)
位于java.lang.ClassLoader.loadLibrary1(ClassLoader.java:1939)
位于java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1864)
位于java.lang.ClassLoader.loadLibrary(ClassLoader.java:1825)
位于java.lang.Runtime.load0(Runtime.java:792)
位于java.lang.System.load(System.java:1059)
位于org.sqlite.SQLiteJDBCLoader.loadNativeLibrary(SQLiteJDBCLoader.java:200)
位于org.sqlite.SQLiteJDBCLoader.extractAndLoadLibraryFile(SQLiteJDBCLoader.java:148)
在org.sqlite.SQLiteJDBCLoader.loadSQLiteNativeLibrary(SQLiteJDBCLoader.java:249)
位于org.sqlite.SQLiteJDBCLoader.initialize(SQLiteJDBCLoader.java:65)
位于org.sqlite.core.NativeDB.load(NativeDB.java:53)
在org.sqlite.core.CoreConnection.open上(CoreConnection.java:136)
在org.sqlite.core.CoreConnection(CoreConnection.java:66)
位于org.sqlite.jdbc3.JDBC3Connection(JDBC3Connection.java:21)
位于org.sqlite.jdbc4.JDBC4Connection(JDBC4Connection.java:23)
位于org.sqlite.SQLiteConnection(SQLiteConnection.java:44)
位于org.sqlite.JDBC.createConnection(JDBC.java:113)
位于org.sqlite.JDBC.connect(JDBC.java:87)
位于java.sql.DriverManager.getConnection(DriverManager.java:579)
位于java.sql.DriverManager.getConnection(DriverManager.java:243)
位于SQLiteJDBC.main(SQLiteJDBC.java:18)
原因:java.lang.ClassNotFoundException:org.sqlite.NativeDB
在java.net.URLClassLoader$1.run(URLClassLoader.java:366)
在java.net.URLClassLoader$1.run(URLClassLoader.java:355)
位于java.security.AccessController.doPrivileged(本机方法)
位于java.net.URLClassLoader.findClass(URLClassLoader.java:354)
位于java.lang.ClassLoader.loadClass(ClassLoader.java:423)
位于java.lang.ClassLoader.loadClass(ClassLoader.java:356)
... 还有21个
以下是我在没有xerial jar的情况下收到的错误:
线程“main”java.lang.ClassNotFoundException中的异常:org.sqlite.JDBC
在java.net.URLClassLoader$1.run(URLClassLoader.java:366)
在java.net.URLClassLoader$1.run(URLClassLoader.java:355)
位于java.security.AccessController.doPrivileged(本机方法)
位于java.net.URLClassLoader.findClass(URLClassLoader.java:354)
位于java.lang.ClassLoader.loadClass(ClassLoader.java:423)
位于sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
位于java.lang.ClassLoader.loadClass(ClassLoader.java:356)
位于java.lang.Class.forName0(本机方法)
位于java.lang.Class.forName(Class.java:186)
位于SQLiteJDBC.main(SQLiteJDBC.java:12)
也许你已经找到了答案,但以防万一。我的mac电脑也有同样的问题,我在中找到了解决方案。总之,这个jar不适合mac,但是您可以从同一个站点使用sqlite-jdbc-3.7.2.jar。我希望我能帮上忙。你在这里用罐子吗?是的。我试着使用sqlite-jdbc4-3.8.2-SNAPSHOT.jarI最终还是成功了,但我发现了一个与您提供的链接中提出的解决方案类似的解决方案。谢谢你的跟进!