MySQL字段类型

时间:2010-12-22 08:06:58

标签: java mysql

CREATE TABLE IF NOT EXISTS `user` (
  `USER_ID` bigint(20) NOT NULL auto_increment,
  `USER_ABOUT_YOU` varchar(255) default NULL,
  `USER_COMMUNITY` tinyblob,
  `USER_COUNTRY` varchar(255) default NULL,
  `USER_GENDER` varchar(255) default NULL,
  `USER_MAILING_LIST` bit(1) default NULL,
  `USER_NAME` varchar(255) default NULL,
  `USER_PASSWORD` varchar(255) default NULL,
  PRIMARY KEY  (`USER_ID`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

为什么USER_COMMUNITY被定义为微小的blob。该字段接受复选框的值。当我将其更改为其他数据类型时,我收到错误?为什么这样?

http://www.vaannila.com/spring/spring-hibernate-integration-1.html

2 个答案:

答案 0 :(得分:1)

这是如何定义的:

@Column(name="USER_COMMUNITY")
public String[] getCommunity() {
    return community;
}
public void setCommunity(String[] community) {
    this.community = community;
}

该表不存储检查,而是存储一个字符串数组。看起来,TINYBLOB是MYSQL上用于存储数组的正确数据类型。

答案 1 :(得分:1)

没有'复选框的价值'。复选框返回字符串,大多数其他HTML输入控件也是如此。这些复选框实际上返回值列表,因为它们都具有相同的名称。我不知道这个值是如何实际存储的,但我可以想象它存储为一个带有一些伴随元数据的字符串数组。这种数据很难存储在另一种字段类型中。

您希望更改哪种字段类型,以及您遇到的错误是什么?

我实际上不会以这种方式存储这些数据,而是给user一个详细信息表,您可以在其中存储用户所属的社区。但本教程似乎更关注jsp而不是数据库规范化。 ;)