gpt4 book ai didi

java - SQLite 数据库不向数据库添加信息并且不返回 Java 中的错误

转载 作者:行者123 更新时间:2023-12-01 19:20:44 25 4
gpt4 key购买 nike

我已经制作了一个登录和注册系统,并且登录系统工作正常,但是当我尝试使用此注册部分时,它将遍历代码,并且不会导致错误,只是不会添加信息但一切都会运行,并且下面的 boolean 值 isRegister 也返回 try,即使它没有添加到 sqlite 数据库中。我还收到消息对话框,显示帐户创建成功!但它仍然没有将信息添加到数据库中。

public boolean isRegister(String fname, String lname, String email, String password, String studentNum, String grade, String division) throws Exception
{
PreparedStatement pr = null;

try
{
String sql1 = "INSERT INTO users (name, email, password, studentNum, grade, division) VALUES (?, ?, ?, ?, ?, ?)";

pr = connection.prepareStatement(sql1);
pr.setString(1, lname + " " + fname);
pr.setString(2, email);
pr.setString(3, password);
pr.setString(4, studentNum);
pr.setString(5, grade);
pr.setString(6, division);
pr.execute();

JOptionPane.showMessageDialog(null, "Account Created Successfully!");

return true;
}
catch (Exception e)
{
e.printStackTrace();
return false;
}
}

不会将信息添加到数据库中,调用该类的代码如下

LoginModel loginmodel = new LoginModel();

if (loginmodel.isRegister(fname, lname, email_in.getText(), password, studentNum, grade_in.getValue().toString(), division))
{
new login().setVisible(true);
dispose();
}

如果您需要任何进一步的信息,请询问。

最佳答案

  1. 永远不要编写这样的 catch block 。异常包含 4 个有用的信息位(异常类型、消息、堆栈跟踪和因果链)。此外,一般来说,如果发生异常,代码正在运行的进程所处的“状态”将不再有效,因此应该中止。您扔掉 4 个有用的东西中的 3 个,将剩余的部分打印到您的 IDE 和日志记录工具无法与之交互的黑洞,然后让流程继续。只需将 throwsWhateverYouNeed 添加到您的方法签名中,如果这确实不是一个选项,并且您不知道如何处理异常,则后备方法是:catch (ExceptionICannotHandle e) { throw new RuntimeException("未处理", e); }。然后你会在这里看到更多/更好的错误消息。请注意,您的方法 sig 中已经有 throws Exception ,因此您的 catch block 只是编写代码以使您的应用程序运行得更糟。把那7行代码删掉就可以了。嘿,在代码变得更好的同时删除代码,感觉一定很好,对吧!

  2. 除非您的数据库连接处于自动提交模式,否则您仍然需要在 execute() 调用后提交。

  3. 如果此代码抛出异常,它将返回 false。你检查过这个吗?您是否收到带有帐户创建成功!的消息对话框?这似乎是相关信息。

关于java - SQLite 数据库不向数据库添加信息并且不返回 Java 中的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59357541/

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