gpt4 book ai didi

mysql - 我的 web 应用程序仍然插入 ""和空值,我该如何解决这个问题?

转载 作者:行者123 更新时间:2023-11-29 11:53:54 26 4
gpt4 key购买 nike

我有包含问题和答案的 Mysql 表

        CREATE TABLE question(
id INT PRIMARY KEY NOT NULL AUTO_INCREMENT,
ttype INT NOT NULL,
content VARCHAR(1000) NOT NULL,
a1 VARCHAR(200) NOT NULL,
a2 VARCHAR(200) NOT NULL,
a3 VARCHAR(200) NOT NULL,
a4 VARCHAR(200) NOT NULL,
a5 VARCHAR(200) NOT NULL,
correctAnswer VARCHAR(10)
)

我正在使用(MVC JSP servlet)插入数据库

我在 DAO 类中的 addquestion() 是

 public int Addquestion(Question q){
int type = q.getTtype();
String content = q.getContent();
String a1 = q.getA1();
String a2 = q.getA2();
String a3 = q.getA3();
String a4 = q.getA4();
String a5 = q.getA5();
String correctAnswer =q.getCorrectAnswer();

Connection con = null;
PreparedStatement insertQuestion = null;
int result = 0;
try{
con = DBConnection.createConnection();
insertQuestion = con.prepareStatement("insert into question(ttype,content,a1,a2,a3,a4,a5,correctAnswer) VALUES (?,?,?,?,?,?,?,?)");
insertQuestion.setInt(1,type);
insertQuestion.setString(2,content);
insertQuestion.setString(3, a1);
insertQuestion.setString(4, a2);
insertQuestion.setString(5, a3);
insertQuestion.setString(6, a4);
insertQuestion.setString(7, a5);
insertQuestion.setString(8, correctAnswer );

result = insertQuestion.executeUpdate();


}
catch(SQLException e){
e.printStackTrace();
}


return result;
}

问题是我认为当(网络应用程序)提交空表单时,(NOT NULL)足以返回错误(结果=0)。但我的数据库仍然采用空值(或“”)?

(注意:当我提交 null 或“”时,我不确定 HTML 空表单返回什么)

非常感谢

最佳答案

是的,它肯定会在数据库中添加null或“”值。为什么是因为准备好的语句会创建类似这样的 SQL(如果您想查看最终查询,请将 System.out.println(insertQuestion); 放在 executeUpdate() 之前)

insert into question(ttype,content,a1,a2,a3,a4,a5,correctAnswer) VALUES (1,'test','test','test','test','test','test','test')

现在假设您没有在 HTML 表单上为某些 not null 字段放置任何值,那么查询将变为

(1,'test','test','test','test','','','test') 

empty String ("") 不等于 null,即使您将 null 放入 HTML 表单中,但它会将其视为

(1,'test','test','test','test','null','null','test') 

它将插入数据库(没有错误)。

因此,最好在客户端(Javascript、jQuery)对非空字段进行验证,而不是在服务器上进行验证。

希望这有帮助:)

关于mysql - 我的 web 应用程序仍然插入 ""和空值,我该如何解决这个问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33548183/

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