gpt4 book ai didi

Java 准备好的语句未输入数据并命中捕获

转载 作者:行者123 更新时间:2023-11-30 07:06:45 28 4
gpt4 key购买 nike

我目前正在为一个更大的程序编写一些 SQL。最初我使用 SQL 原始查询(有效),然后我切换到准备好的语句以确保安全性和整洁。

不幸的是,这些语句没有执行我的插入或任何其他 SQL 函数,并且我一直在 try catch block 中命中 catch。它给出的消息是查询不返回结果,但是我知道该消息本身并不一定表示错误。

这是我的代码,非常感谢任何帮助

 public User createNewUser(String email, String publicKey, int balance, String privateKey, int units, String type)
{

try (Connection conn = DriverManager.getConnection(connectionString);)
{
//create new user in the db
String query = "INSERT INTO " + USER_TABLE_NAME + " (email, publicKey, privateKey, balance) " +
"Values(?, ?, ?, ?)";

PreparedStatement makeNewUser = conn.prepareStatement(query);
makeNewUser.setString(1, email);
makeNewUser.setString(2, publicKey);
makeNewUser.setString(3, privateKey);
makeNewUser.setInt(4, balance)

ResultSet newUser = makeNewUser.executeQuery();
newUser.next();
}
catch(SQLException e)
{
System.out.println("EPIC FAIL " + e.getMessage());
return null;
}

这是用户的表架构:

    static String createUserTable = "CREATE TABLE IF NOT EXISTS " + USER_TABLE_NAME + "(\n"
+ " id integer PRIMARY KEY AUTOINCREMENT,\n"
+ " email text UNIQUE NOT NULL,\n"
+ " publicKey Text UNIQUE NOT NULL, \n"
+ " privateKey Text UNIQUE NOT NULL, \n"
+ " balance INTEGER NOT NULL \n"
+ ");";

最佳答案

改变

ResultSet newUser = makeNewUser.executeQuery();

使用PreparedStatement.executeUpdate()

makeNewUser.executeUpdate();

您的插入不会返回 ResultSet

关于Java 准备好的语句未输入数据并命中捕获,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39968834/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com