【发布时间】:2012-03-13 14:09:18
【问题描述】:
使用一个简单的在线示例,我正在运行一个 Java 程序来从表中返回用户。
数据库是 MySQL。我已经下载了 JDBC 驱动程序,将它存储在我的 JRE7 /lib 文件夹中。
问题是程序永远不会连接到数据库,它会跳过整个 try 块并在最后打印出一个“test”字符串。我是否忽略了这方面的重要一步?真的很郁闷!!
编辑:最好描述一下我是如何尝试建立与数据库的连接的。
mysql-connector-java-5.1.18-bin 存放在 jre7/lib 中。
我启动了 mysql 工作台。我创建的连接名称为 com.fyp.db,主机地址为 127.0.0.1:3306。
然后我运行我的代码,它尝试查询由 mySQL 工作台提供的示例表 - sakila 和..nothing!
已安装 MySQL 工作台。已安装 JDBC 驱动程序。
public class Version {
public static void main(String[] args) {
Connection con = null;
Statement st = null;
ResultSet rs = null;
//String url = "jdbc:mysql://127.0.0.1/sakila";
String url = "jdbc:mysql://localhost:3306/sakila";
String user = "root";
String password = "root";
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
con = DriverManager.getConnection(url, user, password);
st = con.createStatement();
rs = st.executeQuery("select * from ACTOR;");
System.out.println("test");
if (rs.next()) {
System.out.println(rs.getString(1));
}
} catch (SQLException ex) {
ex.printStackTrace();
} finally {
try {
if (rs != null) {
rs.close();
}
if (st != null) {
st.close();
}
if (con != null) {
con.close();
}
} catch (SQLException ex) {
ex.printStackTrace();
}
}
}
}
【问题讨论】:
-
它不会跳过try块,否则会打印错误。提示:添加更多 System.out.println(...) 以了解发生了什么。
-
为什么你确定你没有连接到数据库?也许“测试”在结果集第一行的第一列?
-
肯定会跳过 try 块,我在其中添加了一些“测试”字符串,因为它们没有被打印出来。
-
你不能调试你的代码,看看它是怎么回事吗?
-
仅在这些 catch 块中打印“错误”会剥夺您宝贵的调试信息。将那些 System.out.println("Error") 语句替换为 ex.printStackTrace() 并报告结果。
标签: java mysql database connection