我在大学里为我的DBMS项目创建了一个保险管理系统,我在从SQL Server删除记录时遇到了问题。它引发了一个例外:
SqlException:com.microsoft.sqlserver.jdbc.SQLServerException:该语句未返回结果集。
它还成功删除了我的数据库中的记录。谁能告诉我如何删除这种例外?
String SQL="delete from INMS_3 where Agent_Id=? and First_Name=? and Last_Name=? and User_Name=? and Phone_no=?";
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String connectionUrl = "jdbc:sqlserver://localhost:1433;" +
"databaseName=INMS;user=TestingUser;password=1234;";
Connection con = DriverManager.getConnection(connectionUrl);
System.out.println("Connected to sql server");
String str=jTextField1.getText();
String str1=jTextField2.getText();
String str2=jTextField3.getText();
String str3=jTextField4.getText();
String str4=jTextField5.getText();
PreparedStatement st = con.prepareStatement(SQL);
st.setString(1, str);
st.setString(2,str1);
st.setString(3,str2);
st.setString(4,str3);
st.setString(5, str4);
ResultSet rs = st.executeQuery();
if(rs.next());
{
JOptionPane.showMessageDialog(null,"Deleted Succesfully");
}
if(!rs.next())
{
JOptionPane.showMessageDialog(null,"Unable to delete");
}
else
{
JOptionPane.showMessageDialog(null,"Unable to delete");
}
} catch (SQLException e) {
System.out.println("SQL Exception: "+ e.toString());
} catch (ClassNotFoundException cE) {
System.out.println("Class Not Found Exception: "+ cE.toString());
}
答案 0 :(得分:2)
我认为你使用错误的东西来执行删除操作。
尝试使用st.executeUpdate()
而不是ResultSet rs = st.executeQuery()
- 您正在执行删除而不是返回结果集的内容。
答案 1 :(得分:1)
这不是SQL Server的问题。问题在于您的代码(这是什么?C#?对象设置为期望来自服务器的结果集,但查询是DELETE语句,并且那些不返回行......永远。
陈述编程语言,研究如何执行语句而不是请求结果集。
这条线对于SELECT而不是UPDATE
是有意义的 ResultSet rs = st.executeQuery();
答案 2 :(得分:0)
如果您正在执行删除语句,为什么要执行
ResultSet rs = st.executeQuery();
以下是c#ado.net的示例。如果你使用的是java,它的概念是一样的。
using(var conn = new SqlConnection("my connection string"))
{
var deleteCmd = new SqlCommand();
deleteCmd.Connection = conn;
deleteCmd.CommandType = CommandType.Text;
deleteCmd.CommandText = @"
DELETE Accounts
WHERE account_id = @p_account_id
";
deleteCmd.Parameters.AddWithValue("p_account_id", 123);
conn.Open();
deleteCmd.ExecuteNonQuery();
}