语言:Java
程序:连接到数据库
问题:我正在尝试通过遵循TutorialsPoint tutorial连接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
答案 0 :(得分:1)
您的问题是,您正在明确尝试加载类com.sqlite.JDBC
,而驱动程序类名称在此过程中一定已更改。
JDBC Type 4驱动程序具有added cleverness,该驱动程序允许您仅指定连接URL,并且该驱动程序根据开头(即jdbc:sqlite
)进行加载。无需怀疑驱动程序类的名称是什么。
Rant与当前问题无关:
不幸的是,人们阅读的不是专家编写的旧教程,因此我们不断看到Class.forName()
被使用,以及更严重的问题,它使用Statement
而不是PreparedStatement
。
答案 1 :(得分:0)
我的类路径选项不正确。我在linux上并且正在尝试做:
java -classpath ".;sqlite-jdbc-3.23.1.jar" Test
正确的方法是
java -classpath ".:sqlite-jdbc-3.23.1.jar" Test
冒号不是分号。不幸的是,现在它给了我错误”“ ClassNotFoundException:com.sqlite.JDBC;
我将对此进行调查。 感谢您提供的帮助我发现错误的评论