public void deldaet(){ try { String sql =" insert into book where id=?"; pstmt=conn.prepareStatement(sql); pstmt.setString(1,jtf2.getText()); pstmt.executeUpdate(); JOptionPane.showMessageDialog(this, "删除了一条记录"); }catch(Exception ex) {System.out.println("输入失误");} }
时间: 2024-03-01 09:56:20 浏览: 130
这段代码存在语法错误,无法正确执行。首先,SQL 语句中应该使用 delete 关键字来执行删除操作,而不是 insert。其次,SQL 语句中应该指定要删除的记录的条件,而不是只指定了条件所对应的字段。因此,代码应该改为:
```
public void delete() {
try {
String sql = "DELETE FROM book WHERE id=?";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, jtf2.getText());
pstmt.executeUpdate();
JOptionPane.showMessageDialog(this, "删除了一条记录");
} catch(Exception ex) {
System.out.println("输入失误");
}
}
```
这段代码中,使用了 SQL 的 DELETE 语句来删除满足条件的记录。其中,WHERE 子句指定了要删除的记录的条件,即 id 字段的值等于 jtf2 中用户输入的值。执行 SQL 语句的方式和之前的代码类似。如果删除成功,则会弹出一个提示框。如果发生异常,则会在控制台输出 "输入失误"。
相关问题
下面三种方式,哪种是推荐的写法 方法一: stmt=conn.createStatement(); stmt.execute("select * from tab1 where id=" + id); 方法二: String sql="delete from jdbc_users where id=?"; pstmt=conn.prepareStatement(sql); pstmt.setInt(1, id); 方法三: String sql="delete from jdbc_users where id=" + id; pstmt=conn.prepareStatement(sql);
推荐使用方法二:
```
String sql = "delete from jdbc_users where id=?";
pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, id);
```
原因如下:
1. 方法一存在SQL注入的风险,因为直接将参数拼接到SQL语句中,如果参数中包含特殊字符,就可能导致SQL注入攻击。
2. 方法二使用了预编译语句,将SQL语句和参数分开处理,更加安全,并且可以提高SQL执行的效率。
3. 方法三虽然也是将参数拼接到SQL语句中,但是与方法一不同的是,使用了预编译语句,可以避免SQL注入攻击,但是效率不如方法二。
public void changeData() { try { String sql =" insert into book(bookName,bookAuthar)values(?,?)"; pstmt=conn.prepareStatement(sql); pstmt=conn.prepareStatement(sql); pstmt.setString(1,jtf2.getText()); pstmt.setString(2,jtf3.getText()); pstmt.setString(3,jtf1.getText()); pstmt.executeUpdate(); JOptionPane.showMessageDialog(this, "修改了一条记录"); }catch(Exception ex) {System.out.println("输入失误");} }
这段代码是用于修改数据库中的图书信息的,具体来说,它会将用户在界面中输入的书名和作者存储到数据库表"book"中的相应记录中。其中,第一个问号对应的是书名,第二个问号对应的是作者。需要注意的是,这段代码中的第三个pstmt.setString(3,jtf1.getText())是错误的,因为在SQL语句中只有两个问号,所以应该删除这个语句。
阅读全文