我想从数据库中删除特定记录。
我的代码如下:
<%
String value = request.getParameter("Meter_No");
int v=Integer.parseInt(value);
try{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDirver");
Connection conn = DriverManager.getConnection ("jdbc:sqlserver://localhost:1433;databaseName=myDatabase;
user=shakir;password=shakir123");
Statement st = conn.createStatement();
ResultSet rs =st.executeQuery("DELETE * FROM qesco_table
WHERE Meter_No ="+v+"");
rs.close();
conn.close();
}catch(Exception e){
System.out.print(e.getMessage());
}
%>
但它并没有从数据库中删除数据。
谁能指导我代码问题出在哪里?
最佳答案
代码中的所有内容都很好。
但是您需要使用 st.executeUpdate()
运行查询。
因此更改以下行
ResultSet rs =st.executeQuery("DELETE * FROM qesco_table WHERE Meter_No ="+v+"");
到
st.executeUpdate("DELETE * FROM qesco_table WHERE Meter_No ="+v);
加
您不需要在此程序中包含 ResultSet,因为您的查询不会返回任何要存储的数据。
查询末尾不需要有空的“”(双引号)。
您应该在
finally
block 中关闭连接和其他连接,而不是 try block 本身。
如果您尝试使用 PreparedStatements 会更好编写动态查询。所以它会变成这样,
<%
String value = request.getParameter("Meter_No");
int v=Integer.parseInt(value);
Connection conn = null;
PreparedStatement pst = null;
try{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDirver");
conn = DriverManager.getConnection ("jdbc:sqlserver://localhost:1433;databaseName=myDatabase;user=shakir;password=shakir123");
pst = conn.prepareStatement("delete from qesco_table where Meter_No = ?");
pst.setInt(1,v);
pst.executeUpdate();
}catch(Exception e){
System.out.print(e.getMessage());
}finally{
pst.close();
conn.close();
}
%>
关于java - 使用jsp删除数据库中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24429224/