gpt4 book ai didi

java - 如何使用 java 代码中的条件更改 mysql 数据库中的值?

转载 作者:可可西里 更新时间:2023-11-01 08:00:12 33 4
gpt4 key购买 nike

我正在尝试更改仅包含一个 int 甚至 0 或 1 的值 Dr_status。因此,如果 Dr_status 等于 1,则将其更改为 0,反之亦然。这是代码:

String query = "Select Bluetooth_Address FROM dr";
String str = "40D32DBBE665";//in the database I have only two fields in `Bluetooth_Address` column 40D32DBBE665 and another value
String check = "";
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(query);
PreparedStatement preparedStmt= con.prepareStatement("update `dr` set `Dr_status` = '1'");
PreparedStatement preparedStmt1= con.prepareStatement("update `dr` set `Dr_status` = '0'");

dbtime = rs.getString(1);
if (dbtime.equals(str)){
check = "Select `Dr_status` From `dr` Where `Bluetooth_Address` = " + " " + str ;
if(check.equals(0)){
preparedStmt.executeUpdate();
}
if(check.equals(1)){
preparedStmt1.executeUpdate();
}

不知道哪里出了问题!!!请帮忙。提前致谢。

最佳答案

我对@Marcelo Hernández Rishmawy 的回答给予 +1。不要在 Java 代码中测试条件,而是在自动将 0 转换为 1 和 1 到 0 的 SQL 表达式中针对与您的蓝牙地址条件匹配的行进行测试和更新。

我还要给你一个提示,在 MySQL 中,1 和 0 是整数,但它们也用于 true 和 false。因此,您可以使用以下任一技巧来使语句更紧凑:

"update `dr` set `Dr_status` = ! `Dr_status` where `Bluetooth_Address = " + str

这个技巧也很管用:

"update `dr` set `Dr_status` = 1 - `Dr_status` where `Bluetooth_Address = " + str

这是一种很好的简化方法,但 FWIW 它特定于 MySQL,而不是标准 SQL。其他数据库品牌使用正确的 boolean 值,而不是 1 和 0。


关于您的评论:该错误与上述解决方案无关,这是因为您正在插入一串十六进制数字。您需要引用字符串,或者更好地使用查询参数。

您应该了解如何在任何情况下使用查询参数,因为它们有助于编写安全代码来防御 SQL 注入(inject)问题,而且通常比尝试将变量插入 SQL 查询字符串更容易、更可靠。

参见 Using Prepared Statements在 Java 教程中。

关于java - 如何使用 java 代码中的条件更改 mysql 数据库中的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6427349/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com