gpt4 book ai didi

java - 使用 Java 进行 SQL 插入

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

我正在尝试从 Netbeans 中的 JFrame 面板更新我们的 SQL 数据库。目前,我正在尝试使用“registernewStudent”面板中的一个按钮,用户可以在其中分配 4 个文本字段,其中第一个(学生 ID)和最后一个(房间)应该是整数,中间 2 个是字符串。但是,我收到一条错误消息,显示“线程“AWT-EventQueue-0”java.lang.NullPointerException 中出现异常”

以下是该按钮的源代码。

这是我们的第一个真正的项目,因此我们非常感谢您能获得的任何帮助。

private void btnNyREActionPerformed(java.awt.event.ActionEvent evt) {                                        
try {
String talStrang1 = txtElevID.getText();
int tal1 = Integer.parseInt(talStrang1);
String Strang2 = txtElevFN.getText();
String Strang3 = txtElevEN.getText();
String talStrang4 = txtElevSS.getText();
int tal2 = Integer.parseInt(talStrang4);

database.insert("insert into Elev values( tal1, Strang2, Strang3,tal2)");

} catch (InfException ex) {
Logger.getLogger(NyRegElev.class.getName()).log(Level.SEVERE, null, ex);
}
}

最佳答案

首先,您需要指定要将值插入到哪些列。像这样的东西:

database.insert("插入Elev(column1,column2,column3,column4)值...;

column# 将是表中列的实际名称。

其次,您不能仅将变量作为字符串放入 SQL 中。它不会将它们检测为变量。相反,您需要使用串联并执行以下操作:

database.insert("insert into Elev (column1, column2, column3, column4) values(" + tal1 + "," + Strang2 + "," Strang3 + "," tal2 + ")";

但这会让您容易受到漏洞的影响。您应该使用 prepared statements以避免 SQL 注入(inject)。

可以在上面的链接中找到 Java 中 MySQL 准备好的语句的示例。例如,我已获取您的查询并将示例转换为您应该看到的样子:

String query = "insert into Elev (column1, column2, column3, column4) values (?, ?, ?, ?)";

// create the mysql insert preparedstatement
PreparedStatement preparedStmt = conn.prepareStatement(query);
preparedStmt.setInt(1, tal1);
preparedStmt.setString (2, Strang1);
preparedStmt.setString (3, Strang3);
preparedStmt.setInt(4, tal2);

// execute the preparedstatement
preparedStmt.execute();

准备好的语句将采用提供的参数并将它们放在 query 变量(以及其他内容)中的 ? 的位置。

关于java - 使用 Java 进行 SQL 插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43937133/

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