2012-04-14 14 views
0

JFormからmysqlデータベースに値を挿入します。しかし、私は日付フィールドに値を挿入することはできません..このコードは、日付フィールドを除いて動作しています。誰かが私を助けることができます。..mysqlの文字列型(java)と日付データ型の変換方法は?

  String s1=txtUsername.getText(); 
      String s2=txtPassword.getText(); 
      String s3=txtName.getText(); 
      String s4=txtAddress.getText(); 
      String s5=txtContractEndDetails.getText(); 


      connection getcon = new connection(); 
      Connection conn; 


    try{ 
     conn=getcon.creatConnection(); 

      String sql="insert into TravelGuide(username,password,name,address,contract_end_date)values(?,?,?,?,?)"; 

      PreparedStatement stmt = conn.prepareStatement(sql); 
      java.sql.Date dtValue = java.sql.Date.valueOf(s5); 

      stmt.setString(1, s1); 


      stmt.setString(2, s2); 

      stmt.setString(3, s3); 
      stmt.setString(4, s4); 

     stmt.setDate(5, s5); 

      stmt.executeUpdate(); 



     } 


    catch(Exception ex){ 
     JOptionPane.showMessageDialog(PanelTG, ex.getMessage(),"Error Occured 123",2); 
    } 
+2

SQLエラーメッセージ/例外スタックトレースを送信してください。また、どのSQL型がcontract_end_date列ですか? – Torious

+0

ええ..それはcontract_end_date..errorメッセージです "フィールドリスト 'の"未知の列' contract_end_date ".. – Precious

答えて

0

java.util.Dateオブジェクトに文字列を有効にするには、希望の日付形式でDateFormat(例えばSimpleDateFormat

  • mask the input fieldを必要とするか、カレンダーコンポーネントを使用します。
  • dateFormat.parse(..)を使用して文字列をDateに変更します。
+0

それらをコードすることができます..私はあなたに何を伝えているのか正確な考えを持っていません。 – Precious

+0

' SimpleDateFormatのjavadoc '、' DateFormat'と 'JFormattedTextField'は – Bozho

0

これにMySQL DBを使用しているので、s5の可変文字列をyyyy-mm-ddの日付にフォーマットする必要があります。 dateFormatを使用して書式設定できます。または、s5変数に '2000-06-30'のような文字列を含めるようにしてください。

+0

で十分でしょうか?私はdateFormatについて考えていない – Precious

0

java.util.Dateを渡す必要があります。 SimpleDateFormatを使用してStringからDateを解析することができます。

String s5 = txtContractEndDetails.getText(); 
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); 
Date contractEndDate = null; 
try { 
    contractEndDate = simpleDateFormat.parse(s5); 
} catch (ParseException e) { 
    // handle telling the user they have bad input 
} 
stmt.setDate(5, contractEndDate); 

注:

  • あなたは、あなたのユーザーに適した日付形式を選択したする必要があります

    あなたのコードは次のようになります。変数を避けるため、スタイルの問題として、あなたは、あなたが(どちらかの例外をスローし、またはそれらにメッセージなどを表示する)それを不正な入力とコードの処理方法を決定する必要が

  • を持っているもののオプションについての詳細はthe javadoc
  • を参照してください。 s1s2などのような名前彼らはunreadabilityにつながり、ひいてはバグ:nameなどの固有名詞を使用するか、addressなど、またはインラインそれら(すなわち、それらを削除し、代わりに、直接それらを初期化コードを使用する)
+0

まあ、私はjava.util。*とjava.sqlを使用していました。*彼らは両方のクラスが同じものを使用しているのであいまいです。 – Precious

0
public class Test { 

    public static void main(String[] args){ 
     Date date = new Date(); 

     DateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); 
     String newDate = simpleDateFormat.format(date); 
     System.out.println("DateIn String datatype = "+newDate); 

     System.out.println("DateIn Date datatype = "+java.sql.Date.valueOf(newDate)); 

    } 
} 
0

私は基本的な方法を教えてみましょう変換する方法を投げるt String型のデータ、つまりWebページ/ HTMLページから取得したデータをjavaで処理し、それをMysqlのDBに挿入します。 以下は単なるコードです。

 String d = req.getParameter("dob");  
     SimpleDateFormat formatter = new SimpleDateFormat("yyyy-mm-dd"); 
     java.util.Date convertedDate = formatter.parse(d); 
     java.sql.Date date1 = new java.sql.Date(convertedDate.getTime()); 
     prestat.setDate(3, date1); 
関連する問題