【问题标题】:Change a line to prepared statement将一行更改为准备好的语句
【发布时间】:2021-12-31 01:35:17
【问题描述】:
statement.executeUpdate("INSERT INTO LOGIN VALUES(" + jTextField1.getText() + ",'" + jTextField2.getText() + "'," + jTextField3.getText() + ")");

我有这条线,我正在尝试执行这条线准备语句,但我无法做到。 我所做的是这样的:

   PreparedStatement pstmt = con.prepareStatement("UPDATE Login
                                     SET login_id = ? WHERE username = ?");
 

sql表是这样的

CREATE TABLE login(
  login_id INTEGER PRIMARY KEY,
  username varchar(150) NOT NULL,
  password varchar(150) NOT NULL
);

【问题讨论】:

标签: java mysql sql


【解决方案1】:

以下代码应封装在 ty catch 语句中

另外我希望你在你的代码中添加一个password hashing 函数,其他的都是非常不安全的。

  PreparedStatement pstmt = con.prepareStatement("INSERT INTO LOGIN VALUES (?,?,?)");
  pstmt.setInt    (1, Integer.parseInt(jTextField1.getText()));
  pstmt.setString (2, jTextField2.getText());
  pstmt.setString (3, jTextField2.getText()));


  // execute the preparedstatement
  pstmt.execute();

【讨论】:

  • 非常感谢你,我很感激
【解决方案2】:

观察到的参数化对象以避免 SQL 注入。只是一堆安全。尽管您提供的那个是可以用于学习目的的。

【讨论】:

  • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-19
相关资源
最近更新 更多