检查Java中的MySQL DB中是不是存在值?

Posted

技术标签:

【中文标题】检查Java中的MySQL DB中是不是存在值?【英文标题】:Check if value exists in MySQL DB in Java?检查Java中的MySQL DB中是否存在值? 【发布时间】:2015-08-31 20:02:36 【问题描述】:

我现在正在创建一个游戏,当玩家完成他或她的任务时,它会将任务值存储到数据库中。我现在遇到的问题是编写一个方法,在 mysql 表中搜索玩家 ID 和任务 ID,以检查他或她是否已经完成了它。

我是 Java 数据库编程的新手,所以这是我通过查看其他地方的一些示例代码得到的。

public boolean checkQuest(int questid) 
   Connection con = DatabaseConnection.getConnection();
   PreparedStatement ps = con.prepareStatement("SELECT questid FROM completedQuests WHERE characterid = ?");
   ps.setInt(1, scriptId);
   ResultSet rs = ps.executeQuery();

基本上,我想检查表中是否存在任务 ID。如果没有,这意味着玩家还没有完成任务,因此它是可用的。

【问题讨论】:

您是否已经设置了数据库?你已经可以连接到它了吗? 我确实设置并连接了一个数据库。 【参考方案1】:

我会在 where 子句中进行此检查,并使用 Java 端简单地检查此查询是否返回任何结果:

Connection con = DatabaseConnection.getConnection();
PreparedStatement ps = 
    con.prepareStatement
    ("SELECT questid FROM completedQuests WHERE characterid = ? AND questid = ?");
ps.setInt (1, characterId);
ps.setInt (2, questId);
ResultSet rs = ps.executeQuery();

if (rs.next()) 
    // Quest already completed
 else 
    // Quest not completed yet


// Close resources etc.

【讨论】:

我最初的意图是通过方法参数传递一个 questid 并检查它是否存在于数据库中。我不认为这可以进行比较。我对不明确表示不好。还是我更换?带参数? 我无法理解那里的问题。这个解决方案缺少什么? 如果我要搜索特定的任务 ID,我会用特定的任务 ID 替换“?”吗? @Xari no - 你可以用它设置PreparedStatement。这就是 ps.setInt (2, questId); 所关心的。 @Xari “?”不是 you 替换的占位符,它是 JDBC 语法允许您参数化 PreparedStatements 的方式。

以上是关于检查Java中的MySQL DB中是不是存在值?的主要内容,如果未能解决你的问题,请参考以下文章

创建一种方法来检查Java中的通用HashMap中是不是存在值? [复制]

检查数据库 MySQL 中是不是存在值数组

检查数组中的所有值是不是都存在于数据库列中

如何检查在mysql中存储多个值的变量中是不是存在特定值?

如何检查Mysql中是不是存在数组元素?

SQLAlchemy - MySQL - 检查现有表中是不是存在行[重复]