2011-07-11 71 views
1

Javaパネルを使用してユーザーの個人的な詳細を更新しようとしています。パネルにuser_id (自動生成された)、名前、生年月日。 問題は、Javaパネルの生年月日フィールドに何も入力せずに保存するときです。それは私に上記のエラーを与える。 私は、生年月日(日付データ型)フィールドに直接mysqlデータベースを使用してnullを挿入して検証しようとしました。エラーはありません。 なぜ私はj​​avaパネルを介して挿入するときにnull文字列を取っていませんが、直接mysqlを使用して挿入するときに取っています。com.mysql.jdbc.MysqlDataTruncation:データの切り捨て:不正な日付値:列 'Date_Of_Birth'の行1で

CREATE TABLE `userpersonaldetail` (
    `User_Id` int(10) unsigned NOT NULL auto_increment, 
    `Name` varchar(45) default NULL, 
    `Date_Of_Birth` date default NULL, 
    `Address` varchar(300) default NULL, 
    `Phone` varchar(20) default NULL, 
    `Mobile` varchar(20) default NULL, 
    `Email` varchar(50) default NULL, 
    PRIMARY KEY (`User_Id`), 
    CONSTRAINT `FK_userpersonaldetail_1` FOREIGN KEY (`User_Id`) REFERENCES `usermaster` (`User_Id`) 
) 

、例外が発生したコードの一部である:ここでperBeanは、テストケースのgui.In一つから値を取得JavaBeanです

try 
    { 
     con=(Connection) DBConnection.getConnection(); 
     pstmt=(PreparedStatement) con.prepareStatement("Update userpersonaldetail set "+ 
       "name=?,date_of_birth=?,address=?,phone=?,mobile=?,email=? where user_id=?"); 

      pstmt.setInt(7,perBean.getUserId()); 
      pstmt.setString(1,perBean.getName()); 
      pstmt.setString(2,perBean.getDateOfBirth()); 
      pstmt.setString(3,perBean.getAddress()); 
      pstmt.setString(4,perBean.getPhone()); 
      pstmt.setString(5,perBean.getMobile()); 
      pstmt.setString(6,perBean.getEmail()); 

      int i=pstmt.executeUpdate(); 
} 

iがDATE_OF_BIRTHテキストボックスヌルを維持DBに格納中にエラーが発生しています。

答えて

1

私の最初の推測では、あなたがテーブルのmysqlのダンプを行うとしたら

...フィールドは、それが値を入力するように強制することを意味している「NOT NULL」として定義されていること(またはビューういくつかのツールで)あなたはおそらくそれが定義されて見つけるでしょう:

`someDT` datetime NOT NULL 
+0

私の再フレーミングされた質問をもう一度読むと分かりやすくなります。日付フィールドにはヌル値が許されます。 – ashima

+0

@ashima投稿コードにnull値を挿入しようとしているのをどのように知っていますか? (空の文字列ではない) – nos

+0

あなたが「試して」いれば、キャッチがあります。 – Brian

0

ああ、私は今、あなたは日付として挿入することはできません。あなたは日付を渡す必要があります。

0

属性が値を持っているものではありませんが、それはそこに何かを与えるためにあなたを強制的に、列リストに言及している場合は、それに

statement.setNull(index, datatype)

を使用する必要があります。 ""に設定することは、nullに設定することと同じではありません。

0

私は古いバージョンのmy-sql-connector jar(サーバのlibフォルダにあります)を最新のものに置き換えました。それが私の問題を解決しました。

関連する問題