【问题标题】:update mysql database with jdbc用 jdbc 更新 mysql 数据库
【发布时间】:2011-03-25 06:30:03
【问题描述】:

由于变量,我在更新数据库时出错。这是我的代码:

UPDATE `payment` SET `paid`=1 AND `amoun`=$amountpaid WHERE `paid`=0 AND `userid`=$uid

$amountpaid是用户支付的账单金额,$uid是用户ID。似乎禁止在变量名前使用$。如何在 SQL 中使用变量?

【问题讨论】:

  • 字段列表中支付的未知列金额
  • 和另一个错误:WHERE 子句中的未知列 $uid

标签: mysql database jdbc


【解决方案1】:

你的变量来自哪里?如果你使用 JDBC,你可能想要这样的东西:

int setPaid = 1;
int amountPaid = x; // put $amountpaid here
int wherePaid = 0;
int userId = y; // put $uid here

String updateQuery = "UPDATE payment SET paid = ?, amoun = ?"
        + " WHERE paid = ? AND userid = ?";
PreparedStatement ps = con.prepareStatement(updateQuery);
ps.setInt(1, setPaid);
ps.setInt(2, amountPaid);
ps.setInt(3, wherePaid);
ps.setInt(4, userId);
ps.executeUpdate();

【讨论】:

  • 我们是否需要为那些具有固定值的变量(如paid=1 和paid=0)声明?
  • 我更新了答案,希望能更清楚。您需要将 Java 中的变量设置为与 SQL 查询中的 ? 变量相对应。
  • 我明白了...为那些“?”设置变量仪式?谢谢白牙!!!对于变量类型,它是指数据库中的变量类型吗?如果我想更新一个数组列表呢?
  • 是的,你明白了。 PreparedStatement 类具有许多不同变量类型的设置器。它不支持ArrayList,但是,您必须找到一种方法将其存储到逗号分隔的字符串列表中,或者遍历每个项目并将它们存储为多行。
  • 假设我在数据库中使用 longblob..java 中合适的变量是什么?
【解决方案2】:

我通过使用字符串得到了解决方案。

我将ArrayList 转换为String,然后将数据作为字符串发送。数据已更新,但如果我想查看客户端层中的数据,我不知道接下来会发生什么...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-06
    • 2023-03-18
    • 2013-09-20
    • 1970-01-01
    • 2015-09-20
    • 1970-01-01
    相关资源
    最近更新 更多