无法从Java中的SQL打印信息
用户必须从显示的表中选择度假胜地ID,然后进行预订。我似乎找不到我的问题,我想打印他们正在预订的度假胜地的名称无法从Java中的SQL打印信息,java,sql,jdbc,resultset,Java,Sql,Jdbc,Resultset,用户必须从显示的表中选择度假胜地ID,然后进行预订。我似乎找不到我的问题,我想打印他们正在预订的度假胜地的名称 String x = jTextFieldID.getText(); Integer Resort = Integer.valueOf(x); int resort = Integer.parseInt(x); String sql = "SELECT RESORT_NAME FROM LouwDataBase.Resorts WHERE ID = "+Reso
String x = jTextFieldID.getText();
Integer Resort = Integer.valueOf(x);
int resort = Integer.parseInt(x);
String sql = "SELECT RESORT_NAME FROM LouwDataBase.Resorts WHERE ID = "+Resort;
try (PreparedStatement pstmt = conn.prepareStatement(sql)) {
pstmt.setInt(1, resort);
try (ResultSet rs = pstmt.executeQuery()) {
if (rs.next()) {
String resortName = rs.getString("RESORT_NAME");
JOptionPane.showMessageDialog(null,
"You want to book at " + resortName);
}
您必须使用rs。下一步:
如果你想得到很多结果,你可以使用whilers.next{…}
注意?为了获得良好的实践效果,不要在变量名称的开头使用大写字母。请使用此名称,而应使用RestorName。您必须使用rs。下一步:
如果你想得到很多结果,你可以使用whilers.next{…}
注意?为了获得良好的实践效果,不要在变量名称的开头使用大写字母RestorName使用此名称,而应使用RestorName在尝试读取ResultSet结果之前,您需要对其进行测试:
if(rs.next()) {
String ResortName = rs.getString(1);
JOptionPane.showMessageDialog(null, "You want to book at "+ResortName);
}
您可以使用getString1获取度假村名称,查看更多详细信息。在尝试读取ResultSet结果之前,您需要测试ResultSet结果:
if(rs.next()) {
String ResortName = rs.getString(1);
JOptionPane.showMessageDialog(null, "You want to book at "+ResortName);
}
您可以使用getString1获取RESORT_名称,查看更多详细信息。错误是sql也传递给了Statement.executeQuery,而不是PreparedStatement.executeQuery
Commented是一个准备好的语句的替代用法,与通常使用的一样
您还应该关闭语句和结果集,这可以通过上面的try with resources自动完成
哦,几乎监督了,必须叫下一个rs。前面已经提到了其他语句。错误是sql也被传递到Statement.executeQuery,而不是PreparedStatement.executeQuery
Commented是一个准备好的语句的替代用法,与通常使用的一样
您还应该关闭语句和结果集,这可以通过上面的try with resources自动完成
哦,几乎监督了,必须叫下一个rs。其他人已经提到。您是否有错误?如果是,是什么?问题可能是您没有正确格式化表引用。格式为database.schema.table。可能尝试使用LouwDatabase.dbo.Resorts或实际架构(如果不同)。2017年5月11日9:36:37 PM it.pat.Booking jbutton1Action执行严重:null java.sql.SQLException:不允许在准备好的语句上使用方法“executeQueryString”。在org.apache.derby.client.am.SQLExceptionFactory.getSQLExceptionUnknown源org.apache.derby.client.am.getSQLExceptionUnknown源org.apache.derby.client.am.ClientPreparedStatement.executeQueryUnknown源错误消息非常清楚:改用pstmt.executeQuery,没有字符串参数。你应该用这个问题搜索错误堆栈。你收到错误了吗?如果是,是什么?问题可能是您没有正确格式化表引用。格式为database.schema.table。可能尝试使用LouwDatabase.dbo.Resorts或实际架构(如果不同)。2017年5月11日9:36:37 PM it.pat.Booking jbutton1Action执行严重:null java.sql.SQLException:不允许在准备好的语句上使用方法“executeQueryString”。在org.apache.derby.client.am.SQLExceptionFactory.getSQLExceptionUnknown源org.apache.derby.client.am.getSQLExceptionUnknown源org.apache.derby.client.am.ClientPreparedStatement.executeQueryUnknown源错误消息非常清楚:改用pstmt.executeQuery,没有字符串参数。你应该用这个问题搜索错误堆栈。它是rs.next而不是rs.next,修复错误:抱歉,我尝试使用rs.next,但得到了相同的错误。无论如何,谢谢你的帮助。@Swiper我的错误请尝试使用usinf rs.next加括号instead@Swiper您使用的是什么DBMS?我在NetBeans中使用的是JavaDB。它是rs.next而不是rs.next,请修复错误:抱歉,我尝试使用rs.next,但出现了相同的错误。无论如何,谢谢你的帮助。@Swiper我的错误请尝试使用usinf rs.next加括号instead@Swiper您正在使用什么DBMS?我正在NetBeans中使用JavaDB。只是尝试了一下,不认为我需要循环,我只想显示用户ID的名称enters@Swiper我在回答中在哪里提到了循环?我不明白。对不起,我的意思是测试的下一行只是为了避免在DB没有匹配结果的情况下得到NullPointerException。@Swiper rs.next,它将光标从数据库移到结果集的下一行,如果有行,则返回true,否则为false,您必须使用rs。下一步,在这里阅读此答案,然后尝试一下,不要认为我需要循环,我只想显示用户ID的度假胜地名称enters@Swiper我在回答中在哪里提到了循环?我不明白。对不起,我的意思是测试的下一行只是为了避免在DB没有匹配结果的情况下得到NullPointerException。@Swiper rs.next,它将光标从数据库移到结果集的下一行,如果有行,则返回true,否则为false,您必须使用rs。下一步,请在此处阅读此答案java.sql.SQLException:pos列
“1”超出范围。此结果集的列数为“0”。我更改了WHERE ID=?到其中ID=+Resort,并获得此错误above@Swiper如果您不共享您的更新,我们无法帮助您,请共享您的代码。请使用其他占位符?和setInt1,。。。或者没有设置。准备好的语句用于占位符java.sql.SQLException:列位置“1”超出范围。此结果集的列数为“0”。我更改了WHERE ID=?到其中ID=+Resort,并获得此错误above@Swiper如果您不共享您的更新,我们无法帮助您,请共享您的代码。请使用其他占位符?和setInt1,。。。或者没有设置。准备好的语句用于占位符,
int resort = Integer.parseInt(x);
//String sql = "SELECT RESORT_NAME FROM LouwDataBase.Resorts WHERE ID = ?";
String sql = "SELECT RESORT_NAME FROM LouwDataBase.Resorts WHERE ID = " + resort;
try (PreparedStatement pstmt = conn.prepareStatement(sql)) {
//pstmt.setInt(1, resort);
try (ResultSet rs = pstmt.executeQuery()) {
if (rs.next()) {
String resortName = rs.getString("RESORT_NAME");
JOptionPane.showMessageDialog(null,
"You want to book at " + resortName);
}
}
} catch (SQLException ex) {
Logger.getLogger(Booking.class.getName()).log(Level.SEVERE, null, ex);
}