java - 该行是否存在?如果是更新它,如果不是添加它 mysql/java

标签 java mysql

public static boolean saveUserInfo(Client c){
try {
    Statement statement = conn.createStatement();
    ResultSet group = statement.executeQuery("SELECT * FROM users WHERE username = '"+ c.playerName + "'");


    if (!group.next())
        statement.execute("INSERT INTO `users` (`username`, `password`, `rights`, `address`, `hasbankpin`, `bankpin1`, `bankpin2`, `bankpin3`, `bankpin4`, `height`, `posx`, `posy`, `cbowcount`, `vls`, `skulltime`, `ep`, `dpoints`, `vlsleft`) VALUES ('"+c.playerName+"', '"+c.playerPass+"', '"+c.playerRights+"', '"+c.getIP()+"', '"+c.hasBankPin+"', '"+c.bankPin1+"', '"+c.bankPin2+"', '"+c.bankPin3+"', '"+c.bankPin4+"', '"+c.heightLevel+"', '"+c.absX+"', '"+c.absY+"', '"+c.crystalBowArrowCount+"', '"+c.degradeTime+"', '"+c.skullTimer+"', '"+c.earningPotential+"', '"+c.dungeonPoints+"', '"+c.vlsLeft+"')");

抱歉搞得一团糟,但我想做的是检查用户是否存在于表中。如果是这样,我希望它更新它,如果不是我希望它添加用户。我已经为此尝试了几天,但一直没有成功。

非常感谢任何帮助!

最佳答案

您可以使用 ON DUPLICATE KEY UPDATE 在单个查询中执行此操作子句:

INSERT INTO table_name(...) 
VALUES(...) 
ON DUPLICATE KEY UPDATE col = value, ...;

您需要在 username 列上放置一个 PRIMARYUNIQUE 键:

ALTER TABLE users ADD UNIQUE KEY ix1 (username);

关于java - 该行是否存在?如果是更新它,如果不是添加它 mysql/java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11981686/

相关文章:

mysql - Mysql Json 列中的增量 JSON 字段导致浮点而不是整数

java - 设置 pdf 内容页的标题

java - 如何绘制带有色调的 BufferedImage

java - 没有得到矩阵JAVA主对角线所需的输出

java - com.mysql.jdbc.exceptions.jdbc4.CommunicationsException : Communications link failure

php 在终端上打印出 "Terminated",没有任何错误

mysql - 无法使用 Laravel 将仅时间字段插入 MySQL 数据库

java - 将时区存储为 ID 字符串或与 UTC 的偏移量?

java - 线程安全: JFrame and another class

mysql - 为什么 mongoDB 的 Select 时间比 Fetch 时间少?