Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.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/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
将java连接到sqlite的问题_Java_Database_Sqlite - Fatal编程技术网

将java连接到sqlite的问题

将java连接到sqlite的问题,java,database,sqlite,Java,Database,Sqlite,我已经阅读了很多关于这个主题的帖子,但是没有一个能够解决我的问题。我使用mac,我试图将一个java项目连接到sqlite,但我遇到了一些问题。我已经成功地将mysql连接到java。为了连接mysql,我必须将一个mysql.jar文件添加到我的system/library/java/extensions文件夹中。有一次我做到了,一切都很顺利。我没有幸运地使用sqlite。我去了xerial并尝试使用他们的sqlite jdbc,但这样做会在运行时产生大量其他错误 有没有一个简单的方法和一个简

我已经阅读了很多关于这个主题的帖子,但是没有一个能够解决我的问题。我使用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时收到的错误:

线程“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最终还是成功了,但我发现了一个与您提供的链接中提出的解决方案类似的解决方案。谢谢你的跟进!