gpt4 book ai didi

java - 在 Java 中将数据插入 SQL 数据库时出错

转载 作者:搜寻专家 更新时间:2023-10-30 21:56:23 24 4
gpt4 key购买 nike

我正在使用 Java 为一个学校项目创建一个注册页面。默认情况下,我在数据库中创建了一个包含 3 个用户(管理员、学生领导和学生)的表。现在任何学生都可以使用自己的用户名和密码注册。我试图将用户输入的文本插入到数据库表中,但错误是“org.sqlite.SQLiteException:[SQLITE_ERROR] SQL 错误或缺少数据库(没有这样的列:用户名)”,我真的不明白为什么那里缺少数据库。这是我的代码:

        JButton btnSubmit = new JButton("Submit");
btnSubmit.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
//declare variables
String username = "";
String password = "";
String name = "";
String AdminNo = "";

//get values using getText() method
username = txtUsername.getText().trim();
password = txtPassword.getText().trim();
name = txtName.getText().trim();
AdminNo = txtAdminNo.getText().trim();

if(username.equals("") || password.equals("")){
JOptionPane.showMessageDialog(null, "Name/Password is wrong");
}
else //Insert whether query is running properly
{
Connection conn = sqliteConnection.dbConnector();

String IQuery = "INSERT INTO Login(Username,Password,Name,AdminNo)" + "VALUES(username,password,name,AdminNo)";
System.out.println(IQuery); //Print to console
System.out.println("Connecting to a selected database");

try {
((Connection) conn).createStatement().execute(IQuery);
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} // select the rows



}

}
});

这是我的数据库表: Login Table

最佳答案

这是您要执行的查询:

INSERT INTO Login(Username,Password,Name,AdminNo) 
VALUES(username,password,name,AdminNo)

这是无效的。 Java 代码中的 usernamepasswordnameAdminNo 变量不会神奇地插入到查询中字符串。您必须自己插入它们。

要做到正确,您应该使用 prepared statements ,像这样:

PreparedStatement statement = null;

String sql = "INSERT INTO Login (Username, Password, Name, AdminNo) VALUES (?, ?, ?, ?)";

try {
statement = conn.prepareStatement(sql);
statement.setString(1, username);
statement.setString(2, password);
statement.setString(3, name);
statement.setString(4, adminNo);
statement.executeUpdate();
} catch (SQLException e ) {
e.printStackTrace();
} finally {
if (statement != null) {
try {
statement.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}

小提示:在上面的代码中,我将您的 AdminNo 变量重命名为 adminNo,因为这是 Java 中推荐的变量名称命名风格(称为“camelCase” ).

关于java - 在 Java 中将数据插入 SQL 数据库时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45256535/

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