我想从数据库中删除特定记录。
我的代码如下:
<%
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());
}
%>
但它不是从数据库中删除数据。
有谁能指导我代码的问题在哪里?
答案 0 :(得分:1)
代码中的所有内容都很好。
但您需要使用st.executeUpdate()
运行查询。
所以改变以下行
ResultSet rs =st.executeQuery("DELETE * FROM qesco_table WHERE Meter_No ="+v+"");
到
st.executeUpdate("DELETE * FROM qesco_table WHERE Meter_No ="+v);
<强> PLUS 强>
您不需要在此程序中安装ResultSet,因为您的查询不会返回任何要存储的数据。
查询结尾处不需要空“”(双引号)。
您应该在finally
块中关闭连接和其他人,而不是尝试阻止自己。
如果您尝试使用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();
}
%>
答案 1 :(得分:0)
要使用JDBC从数据库中删除记录,您需要使用executeUpdate("your query")
方法。当您想从数据库中检索数据时,将使用executeQuery()
查询。
然后查询应该是
DELETE FROM qesco_table
WHERE Meter_No ="+v+"
不是Delete * from table
,正确的是Delete from table
更改为
st.executeUpdate("DELETE FROM qesco_table WHERE Meter_No ="+v);
答案 2 :(得分:0)
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.executeUpdate("DELETE * FROM qesco_table WHERE Meter_No ="+v);
}
catch(SQLException e){
System.out.print(e.getMessage());
}
finally
{
rs.close();
conn.close();
}
答案 3 :(得分:0)
我建议避免使用Scriplet来使用JSP Standard Tag Library和易于用户且不易出错的表达式语言。
您还应该在servlet中移动此数据库代码并从JSP调用它。如果您仍然有兴趣在JSP中执行此操作,那么您应该使用专为JSP访问数据库而设计的SQL Tag Library。
示例代码:
<sql:setDataSource var="dataSource"
driver="com.microsoft.sqlserver.jdbc.SQLServerDirver"
url="jdbc:sqlserver://localhost:1433;databaseName=myDatabase"
user="shakir" password="shakir123" />
<sql:update dataSource="${dataSource}"
sql="DELETE FROM qesco_table WHERE Meter_No =?">
<sql:param value="${param.Meter_No }" />
</sql:update>
答案 4 :(得分:0)
试试这个兄弟!!它确实可以使用101%
<%
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();
String sql = "DELETE FROM qesco_table WHERE Meter_No= '"+v+"'";
st.executeUpdate(sql);
}
catch(Exception e){
System.out.print(e.getMessage());
}
%>
答案 5 :(得分:0)
Class.forName("com.mysql.cj.jdbc.Driver");
Connection c=DriverManager.getConnection("jdbc:mysql://localhost:3306/advjava", "root", "root");
Statement stat=c.createStatement();
int del=stat.executeUpdate("Delete from Cart where U_Id="+uid);