gpt4 book ai didi

mysql - 我的 INSERT 语句中的 Java 和错误

转载 作者:太空宇宙 更新时间:2023-11-03 12:20:48 26 4
gpt4 key购买 nike

请帮助我解决我做错的问题。

名为 renters 的数据库

addressID 是从一个名为 Property 的表自动递增的,并包含在一个名为 Renter 的表中,我正在做一个 java 赋值。

我连接到数据库,当我尝试添加新租户时出现此错误

Error processing the SQL!java.sql.SQLException: Field 'AddressID' doesn't have a default value
Database connection terminated

这是我的插入语句:

     String addFirstName = txtFirstName.getText();
String addLastName = txtLastName.getText();
String addCellPhone = txtCellPhone.getText();
String addDepositPaid = txtDepositPaid.getText();
String addDepositAmtPaid = txtDepositAmtPaid.getText();

Statement lstatement = conn.createStatement();

ls_query = "INSERT INTO Renter (FirstName,LastName,CellPhone,DepositPaid,DepositAmtPaid) VALUES('" + addFirstName + "','" + addLastName + "','" + addCellPhone + "','" + addDepositPaid + "'," + addDepositAmtPaid + ")";

myStatement.executeUpdate(ls_query); JOptionPane.showMessageDialog(null, "New Renter Added");

;

最佳答案

查看数据库架构,AddressID 列可能被标记为 NOT NULL。您试图在没有为该列指定值的情况下插入记录,并且由于没有指定默认值,插入失败。

因此,您可以修改架构并删除 NOT NULL 约束(如果有意义),或者为该列指定一个默认值,或者在您的插入中提供一个默认值。

但我认为您的代码还有另一个主要问题:当您将插入语句串在一起时,您很容易受到 SQL 注入(inject)。解决方法很简单,使用PreparedStatement,可以找到很好的教程here

前往 bobby-tables.com ,这是对非常常见的 SQL 注入(inject)问题的一个很好的首次介绍,其中包含有关如何在包括 Java 在内的许多语言中避免这些问题的方法。很棒的资源!

关于mysql - 我的 INSERT 语句中的 Java 和错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20164156/

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