当前位置: 首页 > 知识库问答 >
问题:

如何在JDBC语句中设置变量?

舒斯伯
2023-03-14
String insertStr="INSERT INTO  table1(username1,password1) VALUES(\"john\",\"password\")";
String a=username.getText();
String b=password.getText();

try {
    Class.forName("com.mysql.jdbc.Driver");  
    Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/java_db1","root","");  

    Statement stmt=con.createStatement();        
    String insertStr="INSERT INTO  table1(username1,password1) VALUES(a,b);";
    stmt.executeUpdate(insertStr);
} catch (Exception e) { }

共有1个答案

穆浩皛
2023-03-14

使用[PreparedStatement][1]而不是您的方式,因为您的方式可能会成为SQL注入或语法错误的受害者:

String insertStr = "INSERT INTO  table1(username1,password1) VALUES(?, ?)";
try (PreparedStatement pst = con.prepareStatement(insertStr)) {
    pst.setString(1, a);
    pst.setString(2, b);
    pst.executeUpdate();
}

出于安全考虑,我不建议使用gettext()获取密码,而是使用getpassword(),因此可以使用:

pst.setString(1, username.getText());
pst.setString(2, new String(passwordField.getPassword()));

看看这个:

    null
 类似资料:
  • 问题内容: 我的问题是我必须在try语句中设置变量,否则会出现编译错误。 稍后我需要使用该变量,但现在超出了范围,所以我相信。我在try语句外部初始化了该变量并将其设置为null,我以为可以在外部访问它,但仍然得到了。 下面的代码,其中有很多代码使阅读变得更容易-我知道这是不好的代码,但是我是Servlets的新手,只想看看它与所有活动部件一起运行时应如何工作。 我创建了另一个类,该类调用crea

  • 问题内容: 如何在执行Update语句时设置变量?我似乎无法弄清楚语法。 所以我想要下面这样的东西,但是它说语法是错误的: 问题答案: 这个有可能 :- 设置整数(不递增)

  • 问题内容: 我试图编写一个简单的查询,在其中声明一些变量,然后在Oracle的select语句中使用它们。我以前可以在SQL Server中使用以下命令执行此操作: 从我完成的搜索看来,您无法在Select语句中声明和设置像这样的变量。这是对的还是我在发短信? 问题答案: 从我完成的搜索看来,您无法在Select语句中声明和设置像这样的变量。 这是对的还是我错过了什么? 在Oracle PL /

  • 问题内容: 我有一个合并语句,该语句应始终更新或插入单个记录。我想记住该语句在变量中的ID。看起来像这样: 现在这不起作用,因为您不能以这种方式在输出子句中设置@int。我知道我可以创建一个模板并在输出中使用 INTO @temptable 。但是由于我 知道 它始终是一条记录,因此我希望将ID包含在INT变量中。这有可能吗?还是我被迫使用表变量。我希望我只是缺少一些语法。 问题答案: 不,您必须

  • 问题内容: 我正在使用R来调用mySQL语句,其中我在语句外定义了变量,例如 但这会返回一个空集,我已经在Google周围搜索并尝试了“。&foo”。“ .foo。” ‘。&& foo。’‘和许多不同的组合,但是它们都不起作用,我认为这应该是mysql问题,而不是我遇到的R特定问题,但不确定。通常,变量具有$值,但R中没有。 问题答案: 这应该工作:

  • 问题内容: 我正在尝试在内容表中插入值。如果我在VALUES内没有PHP变量,则效果很好。当我将变量放在里面时,这是行不通的。我究竟做错了什么? 问题答案: 在任何MySQL语句中添加PHP变量的规则很简单: 任何表示 SQL数据文字的 变量(或简单地说-SQL字符串或数字)都 必须通过准备好的语句添加 。没有例外。 任何其他查询部分(例如SQL关键字,表或字段名或运算符)都必须通过 白名单 进行