【发布时间】:2015-01-12 20:21:47
【问题描述】:
我是 STRUTS 和 JDBC 的新手,我的应用程序尝试连接到具有 3 个表的简单数据库,现在所做的只是尝试查询 1 个仅存储“名字、姓氏和 Id 字段”的表
System.out.println("-------- Oracle JDBC Connection Testing ------");
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
} catch (ClassNotFoundException e) {
System.out.println("Where is your Oracle JDBC Driver?");
e.printStackTrace();
return null;
}
System.out.println("Oracle JDBC Driver Registered!");
try {
connection =
DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","david","changeit");
} catch (SQLException e) {
System.out.println("Connection Failed! Check output console");
e.printStackTrace();
return null;
}
if (connection != null) {
System.out.println("You made it, take control your database now!");
} else {
System.out.println("Failed to make connection!");
}
如果发生匹配,我想在哪里获得 1 列的结果:
String sql = "SELECT S_ID FROM Students WHERE firstname=? AND lastname=?";
PreparedStatement ps = connection.prepareStatement(sql);
ps.setString(1, firstname);
ps.setString(2, lastname);
rs = ps.executeQuery();
while (rs.next()) {
studentid = rs.getString(1);
ret = SUCCESS;
}
} catch (Exception e) { ...
据我所知,连接已建立, SQL 查询
Select s_id from Students where firstname='first' and lastname='last';
在 SQL Dev 上运行时。工作并给我一个单一的结果。
我并没有真正得到堆栈跟踪代码只是从 'while (rs.next()) {..' 之前直接跳转到 finally 块
} catch (Exception e) {
e.printStackTrace();
ret = ERROR;
} finally {
if (connection != null) {
try {
connection.close();
} catch (Exception e) {
}
}
}
【问题讨论】:
-
第83行是哪一行?
-
hmm 实际上是一个数字,但运行时代码甚至不会进入 while 循环 while (rs.next()) { ...
-
是的,名字和姓氏已正确填充,我已对其进行了调试。
-
您是否尝试调试以确保正确填写名字和姓氏?
-
关于您关于不进入
while(rs.next())循环的评论,您还从哪里调用getString()?因为这似乎是错误的来源。
标签: java sql jdbc struts2 oracle-sqldeveloper