使用jsp从数据库中删除数据

时间:2014-06-26 11:23:34

标签: java jsp

我想从数据库中删除特定记录。

我的代码如下:

<%
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());
}
%>

但它不是从数据库中删除数据。

有谁能指导我代码的问题在哪里?

6 个答案:

答案 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

  1. 您不需要在此程序中安装ResultSet,因为您的查询不会返回任何要存储的数据。

  2. 查询结尾处不需要空“”(双引号)。

  3. 您应该在finally块中关闭连接和其他人,而不是尝试阻止自己。

  4. 如果您尝试使用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);