【发布时间】:2017-12-28 14:52:16
【问题描述】:
我正在使用 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 + "', '" +名称 + "', '" + AdminNo + "')";.但我建议阅读 SQL-Injection。