Java 枚举数据类型中的数据截断错误

Java 枚举数据类型中的数据截断错误,java,mysql,jsp,servlets,enums,Java,Mysql,Jsp,Servlets,Enums,我不熟悉JSP和Eclipse 我在JSP页面中有一个组合框,其中如下所示 <select name="User_type"> <option value="1">Buyer</option> <option value="2">Seller</option> </select> 这里我的数据库结构是: insert into signup values('"+User_type+"') 在数据库中

我不熟悉JSP和Eclipse

我在JSP页面中有一个组合框,其中如下所示

  <select name="User_type">
   <option value="1">Buyer</option>
   <option value="2">Seller</option>
   </select>
这里我的数据库结构是:

insert into signup values('"+User_type+"')
在数据库中,我的数据类型为enum(用户类型-enum('b','s')

我的插入查询:

insert into signup values('"+User_type+"')
我的期望是,当选择的输入是买方时,b应该存储在DB中


然而,它说发生了数据截断错误

您的JSP页面为买家发布了
1
,而您的数据库期望出现
b
。你没有将
1
映射到
b
任何地方,你会感到困惑,它不起作用了?请,请!!,停止使用字符串连接和用户提供的值来构建SQL语句,除非您希望程序失败和/或受到攻击。使用
PrepareStatement
和参数标记。@Andreas是枚举数据类型,因此我希望“1”映射为“a”,2映射为“b”。我的期望是否错误?是的,您的期望是错误的。为什么您会认为字符串literal
'1'
会神奇地映射到字符串literal
'a'
。即使您是对的,JSP中也有值
1
2
,但枚举需要
'b'
's'
,因此如果
1
映射到
'a'
,则,它仍然不起作用。@Andreas很抱歉我的评论有误。它是枚举数据类型,所以我希望“1”映射为“b”,2映射为“s”。当我使用命令(insert into signup values(1))手动插入它时,它被存储为b。您的JSP页面正在为买家发布一个
1
,您的数据库需要一个
b
。你没有将
1
映射到
b
任何地方,你会感到困惑,它不起作用了?请,请!!,停止使用字符串连接和用户提供的值来构建SQL语句,除非您希望程序失败和/或受到攻击。使用
PrepareStatement
和参数标记。@Andreas是枚举数据类型,因此我希望“1”映射为“a”,2映射为“b”。我的期望是否错误?是的,您的期望是错误的。为什么您会认为字符串literal
'1'
会神奇地映射到字符串literal
'a'
。即使您是对的,JSP中也有值
1
2
,但枚举需要
'b'
's'
,因此如果
1
映射到
'a'
,则,它仍然不起作用。@Andreas很抱歉我的评论有误。它是枚举数据类型,所以我希望“1”映射为“b”,2映射为“s”。当我使用命令(insert into signup values(1))手动插入它时,它被存储为b。