0

语言:Java

程序:连接到数据库

问题:我正在尝试按照 TutorialsPoint教程连接 sqlite 数据库,但我不断收到未找到主类的错误。

实现:下面是我的代码,后面是我的终端命令和文件夹结构截图。但基本上我所有的文件都位于一个文件夹中,包括 sqlite jar 文件。

import java.sql.*;

public class Test {
 public static void main(String[] args) {

 Connection c = null;

 try{
   Class.forName("com.sqlite.JDBC");
   c = DriverManager.getConnection("jdbc:sqlite:test.db");
 } catch(Exception e) {
   System.err.println(e.getClass().getName() + ": " + e.getMessage());
   System.exit(0);
 }

 System.out.println("Opened database successfully!");
 }
}

终端命令

javac Test.java
java -classpath ".;sqlite-jdbc-3.23.1.jar" Test

在此处输入图像描述

4

2 回答 2

0

我的类路径选项不正确。我在linux上并试图做:

java -classpath ".;sqlite-jdbc-3.23.1.jar" Test

正确的方法是

java -classpath ".:sqlite-jdbc-3.23.1.jar" Test

冒号不是分号。不幸的是,现在它给了我错误” ClassNotFoundException: com.sqlite.JDBC;

我会调查一下。感谢您的评论帮助我找到了错误

于 2018-08-21T19:54:39.393 回答
0

您的问题是您明确尝试加载 class com.sqlite.JDBC,而驱动程序类名称必须在途中更改。

JDBC Type 4 驱动程序增加了一些技巧,它允许您只指定连接 URL,并且驱动程序会根据开头(即jdbc:sqlite)加载自己。无需怀疑驱动程序类的名称是什么。


与手头的问题无关的咆哮:

不幸的是,人们阅读由非专家编写的旧教程,所以我们经常看到Class.forName()被使用,以及更严重的问题,即使用Statement而不是PreparedStatement.

于 2018-08-21T20:13:00.863 回答