ฉันพบปัญหาแปลก ๆ :
ฉันมีคอลัมน์ "MaxDealtDamage" ซึ่งต่ำกว่า 1000000 (1,000k) รหัสเป็นเช่นนี้:
class xyz = PlayerData.GetData(player);
xyz.LoginTimes++;
PlayerData.SetData(xyz, player);
เมื่อเป็น 1000000 (1,000k) หรือสูงกว่า ข้อผิดพลาดนี้กำลังถูกส่ง:
com.mysql.jdbc.Exceptions.jdbc4.MySQLSyntaxErrorException: คุณมีข้อผิดพลาดในไวยากรณ์ SQL ของคุณ ตรวจสอบคู่มือที่สอดคล้องกับเวอร์ชันเซิร์ฟเวอร์ MariaDB ของคุณเพื่อดูไวยากรณ์ที่ถูกต้องเพื่อใช้ใกล้ '.000,
MaxDefense
= 0 WHERE UUID='d839d1f0-ad5b-4922-841c-1d6ee05d9f56'' ที่บรรทัด 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);