gpt4 book ai didi

java - INSERT INTO 语句自动向从 1000k 开始的 java 整数添加千位分隔符

转载 作者:行者123 更新时间:2023-12-02 10:21:32 24 4
gpt4 key购买 nike

我遇到了一个奇怪的问题:

我有一列“MaxDealtDamage”,例如低于 1000000 (1000k)。代码是这样的:

class xyz = PlayerData.GetData(player);
xyz.LoginTimes++;
PlayerData.SetData(xyz, player);

当它是 1000000 (1000k) 或更高时,将发送此错误:

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '.000, MaxDefense = 0 WHERE UUID='d839d1f0-ad5b-4922-841c-1d6ee05d9f56'' at line 1

它的行为就像尝试给他一个包含“4.000.000”的字符串,但它是一个值为“4000000”(4000k)的整数。为了确保运行时的输出是 4000000,我仔细检查了它。

这里是查询:

MessageFormat.format("INSERT INTO PlayerData(UUID,VIPExpirationDate,IPv4,FirstPlayTime,LastPlayTime,TotalPlayTime,TotalLogins,MaxDealtDamage,MaxDefense) " + "VALUES(''{0}'',''{1}'',''{2}'',''{3}'',''{4}'',{5},{6},{7},{8});", data.UUID.toString(), DBDateFormat.format(data.VIPExpirationDate), data.IPv4, DBDateFormat.format(data.FirstPlayTime), DBDateFormat.format(data.LastPlayTime), data.TotalPlayTime, data.TotalLogins, data.MaxDealtDamage, data.MaxDefense);

最佳答案

MessageFormat 不是用于创建 SQL 语句的工具。它是一个简单的实用程序,用于构建具有正确格式的文本消息。

您应该使用 PreparedStatement使用绑定(bind)参数,如 Using Prepared Statements 中所述教程。 JDBC 将负责转义和格式化提供的值,以便数据库服务器可以接收它们,同时防止 SQL Injections .

关于java - INSERT INTO 语句自动向从 1000k 开始的 java 整数添加千位分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54316446/

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