错误:在表中插入时数据截断

时间:2009-10-02 14:03:27

标签: sql jdbc

我试图通过传递函数中的值来在表中插入值 像这样:

public void insert(long r,String s_n,char sex,String sf_n,String sm_n,int c,char sec,long tel,long amount,String add,int age,String house)
    {
        try{
            this.ps=this.con.prepareStatement("insert into s_table values(?,?,?,?,?,?,?,?,?,?,?,?);");
            this.ps.setLong(1,r);
            this.ps.setString(2,s_n);
            this.ps.setObject(3,sex,java.sql.Types.CHAR);
            this.ps.setString(4,sf_n);
            this.ps.setString(5,sm_n);
            this.ps.setInt(6,c);
            this.ps.setObject(7,sec,java.sql.Types.CHAR);
            this.ps.setLong(8,tel);
            this.ps.setLong(9,amount);
            this.ps.setString(10,add);
            this.ps.setInt(11, age);
            this.ps.setString(12,house);
            this.ps.executeUpdate();
            this.ps.close();
            con.close();
        }catch(SQLException e){System.out.println("The statement is not established while inserting the element bco'z of "+e.getMessage());
        e.printStackTrace();}
    }

jsp页面模型是:

但它显示数据截断错误。 alt text仅供参考:已建立连接

1 个答案:

答案 0 :(得分:-1)

如评论中所述,这必须是因为您的列的大小。

我认为你找到了一个解决方案而你没有把你的问题作为“回答”,但我认为这对那些能解决这个问题的人有用。所以这是我的答案。

这里有一个可以属于你的sql代码,varchar(x)允许你有一个x char字符串没有任何问题:

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";

/*!40101 SET NAMES utf8 */;
--
-- BDD: `test2`
--

-- --------------------------------------------------------

--
-- Structure of the table `s_table`
--

CREATE TABLE IF NOT EXISTS `s_table` (
  `r` bigint(20) NOT NULL AUTO_INCREMENT,
  `s_n` varchar(200) NOT NULL,
  `sex` int NOT NULL,
  `sf_n` varchar(200) NOT NULL,
  `sm_n` varchar(200) NOT NULL,
  `c` int(11) NOT NULL,
  `sec` int NOT NULL,
  `tel` bigint(20) NOT NULL,
  `amount` bigint(20) NOT NULL,
  `address` varchar(2000) NOT NULL,
  `age` int(11) NOT NULL,
  `house` varchar(300) NOT NULL,
  PRIMARY KEY (`r`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

如果还有其他问题,请问。