首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如果数据库行不存在,如何插入它?

如果数据库行不存在,如何插入它?
EN

Stack Overflow用户
提问于 2015-12-28 19:38:14
回答 2查看 583关注 0票数 0

我试图插入一些播放器数据,如果它还不存在,但是我的语句每次都会创建一个新的行。这是我写的方法:

代码语言:javascript
运行
复制
public void insertPlayerData(PlayerJoinEvent event) {
    Player player = event.getPlayer();
    UUID uuid = player.getUniqueId();
    String ign = player.getDisplayName();
    String profile = "1";

    try {
        //Connect To Database
        Connection con = getConnection();
        //Prepare Query Statement
        PreparedStatement posted = con.prepareStatement(
                "INSERT INTO players (uuid, ign, profile)"
                + "VALUES ('"+uuid+"', '"+ign+"', '"+profile+"')"
                + "ON DUPLICATE KEY UPDATE profile = '"+profile+"'");
        //Execute Statement
        posted.executeUpdate();
    } catch (Exception e) {
        System.out.println(lb + "Error: " +e);
    } finally {
        System.out.println(lb + "Player Data Inserted");
    }
}

不幸的是,我的语句正在创建重复的行。我尝试过许多不同的方法,但都失败了。有什么想法吗?提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-28 19:58:08

您的查询显示重复的密钥更新配置文件=配置文件,这意味着在创建表时需要将配置文件作为唯一的键约束。

票数 1
EN

Stack Overflow用户

发布于 2015-12-28 21:31:43

1)在应该是唯一的列上创建唯一的键(似乎您想要唯一的“配置文件”)

2)使用:将忽略插入表..。它将尝试插入行,但如果唯一的键发现冲突-它只是忽略行和尝试下一个(如果它的大量插入或只是结束查询),没有任何错误。作为此查询的结果,将为您成功地为插入行编号。

如果您真的不需要更新行,请更快地忽略副本上的数据行。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34499633

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档