我正在对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());
}
%>
您的代码有两个问题。您需要修复的唯一一个是您不使用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();
}
}
使用参数使用SQL语句
感谢您的回复,很抱歉以前没有回复。我尝试使用准备量,但是结果集一直空返回。我终于找到了我有问题的地方,如果!(rsc.getrow((== 0((始终返回0,即使重置设置有记录。我已经删除了该程序的一部分,并且在rsc.next((((时都放置了。我的代码第二个问题是什么?谢谢问候