检查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 语法允许您参数化 PreparedStatement
s 的方式。以上是关于检查Java中的MySQL DB中是不是存在值?的主要内容,如果未能解决你的问题,请参考以下文章