我正在对SQL Server数据库进行两个查询,第一个查询返回带有数据的结果集,但是第二个查询始终返回结果集为空。如果我在SQL SERVER中执行查询,则效果很好。我试图进行另一个查询:SELECT TOP 10 * FROM TABLE
,并且始终返回空。
<%
String url,ssql;
int i,j,k;
int reg[]=new int[256];
try{
Class.forName("com.microsofto.sqlserver.jdbc.SQLServerDriver");
url="jdbc:sqlserver://localhost/;databaseName=acsc;user=user;password=1234";
Connection conn = DriverManager.getConnection(url);
Statement stc = conn.createStatement();
ssql="SELECT Nombre,max(Registro) FROM Tabla Group by Nombre order by Nombre";
ResultSet rsc= stc.executeQuery(ssql);
i=1;
while(rsc.next()){
reg[i]=rsc.getInt(2);
i++;
}
j=0;
do{
//ssql="SELECT * FROM Tabla Where Registro="+String.valueOf(reg[j]);
ssql="SELECT TOP 10 * FROM Tabla";
rsc= stc.executeQuery(ssql);
if(!(rsc.getRow()==0)){
out.println(rsc.getString(1)+" "+rsc.getString(2)+" "+rsc.getString(3));
}else{
out.println("vacio");
}
j++;
}while(j<i);
}catch(SQLException se){
out.println(se.toString());
}
%>
答案 0 :(得分:2)
您的代码有两个问题。您需要修复的唯一一个问题是您没有在SQL查询中使用参数。见
public static void executeStatement(Connection con) {
try(PreparedStatement pstmt = con.prepareStatement("SELECT LastName, FirstName FROM Person.Contact WHERE LastName = ?");) {
pstmt.setString(1, "Smith");
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
System.out.println(rs.getString("LastName") + ", " + rs.getString("FirstName"));
}
}
// Handle any errors that may have occurred.
catch (SQLException e) {
e.printStackTrace();
}
}
答案 1 :(得分:0)
感谢您的回复,也很抱歉以前没有回复。 我尝试使用prepareStatement,但是ResultSet始终返回空。 我终于找到了问题所在,如果!(Rsc.getRow()== 0))始终返回0,即使ResulSet有记录也是如此。 我已经删除了程序的那部分,并将其放置在rsc.next()中,并且它可以正常工作。 我的代码有第二个问题? 谢谢问候