我是JAVA和SQL的新手。
在一个练习中,我需要从NetBeans中的示例SQL表中读取数据。
在“services”中,我启动了JAVA DB服务器。都好。出现以下消息:
Mon Dec 16 21:40:36 EST 2013 : Security manager installed using the Basic server security policy.
Mon Dec 16 21:40:37 EST 2013 : Apache Derby Network Server - 10.8.3.0 - (1405108) started and ready to accept connections on port 1527
但是当我运行此程序(如下)时,会发生以下错误:
SQL Error: java.sql.SQLException: No suitable driver found for jdbc:derby://localhost:1527/sample 0 08001
以下是代码..如何确保找到合适的驱动程序?
import java.sql.*;
public class TableReporter {
public static void main(String[] args) {
String data = "jdbc:derby://localhost:1527/sample";
try (
Connection conn = DriverManager.getConnection(
data, "app", "APP");
Statement st = conn.createStatement()) {
Class.forName("org.apache.derby.jdbc.ClientDriver");
ResultSet rec =st.executeQuery(
"select * " +
"from SYS.SYSTABLES" +
"order by TABLENAME");
while(rec.next()){
System.out.println("TABLEID:\t" + rec.getString(1));
System.out.println("TABLENAME:\t" + rec.getString(2));
System.out.println("TABLETYPE:\t" + rec.getString(3));
System.out.println("SCHEMAID:\t" + rec.getString(4));
System.out.println();
}
st.close();
} catch (SQLException s){
System.out.println("SQL Error: " + s.toString() + " "
+ s.getErrorCode() + " " + s.getSQLState());
} catch (Exception e) {
System.out.println("Error: " + e.toString()
+e.getMessage());
}
}
}
答案 0 :(得分:2)
在尝试创建连接之前,是否需要加载驱动程序?
移动此声明
Class.forName("org.apache.derby.jdbc.ClientDriver");
成为try块中的第一个。
答案 1 :(得分:2)
问题在于jar文件。
Class.forName("org.apache.derby.jdbc.ClientDriver");
检查,
如果一切都不起作用,只需编写一个简单的JDBC程序,使用notpad& amp;运行它,检查你的机器有什么问题。
答案 2 :(得分:0)
在代码中尝试此更改
Class.forName("org.apache.derby.jdbc.ClientDriver");
Connection conn = DriverManager.getConnection(
data, "app", "APP");
Statement st = conn.createStatement()) {
答案 3 :(得分:0)
你需要装载一罐德比司机。
的Class.forName( “org.apache.derby.jdbc.ClientDriver”);
答案 4 :(得分:0)
虽然提供了
,但我遇到了同样的问题Class.forName("org.apache.derby.jdbc.ClientDriver");
但我发现我的属性文件,我正在加载db用户名和密码来自格式不正确。 它应该是这样的:
dburi=jdbc:derby://localhost:1527/dbname
user=username
pass=xxxx
并在代码中:
CachedRowSetImpl crs = new CachedRowSetImpl();
Properties pr = Properties();
crs.setUrl(pr.getProperty("dburi"));
crs.setUsername(pr.getProperty("user"));
crs.setPassword(pr.getProperty("pass"));