2009-10-02 24 views
1

我試圖在表中插入值插入:錯誤:數據截斷,而在功能 傳遞值這樣的表

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僅供參考:連接已建立

+3

數據截斷?聽起來就像你把一個值大於列分配大小的值。 – 2009-10-02 14:10:45

+0

如果沒有數據庫結構以及哪個列被截斷的更具描述性的錯誤,那麼很難給你提供建議。 – 2009-10-06 14:40:14

+0

請爲您的DBMS(Postgres,Oracle,Firebird,...)添加適當的標籤 – 2014-07-23 08:54:02

回答

-1

正如在評論中所說,這必須是因爲您的列的大小。

我認爲你找到了一個解決方案,你沒有把你的問題作爲「回答」,但我認爲這可能對有這個問題的人有用。所以這是我的答案。

這裏一個SQL代碼誰可以是你的,VARCHAR(X)讓你有X字符的字符串,沒有任何問題:

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 ; 

如果有別的只問。