2017-09-09 7 views
0

JavaプログラムでMySQL auto_incrementを使用しようとしています。しかし、私はこのタイプのエラーを取得しています:MySQL自動インクリメントカラムの操作方法は?

Sep 09, 2017 7:36:16 PM demosub jButton1ActionPerformed SEVERE: null 
java.sql.SQLException: No value specified for parameter 1 

は、これが私のプログラムです:

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {           
    try { 
     String url = "jdbc:mysql://localhost:3306/anadha"; 
     String uname1 = "root"; 
     String password = "csrajesh"; 
     Class.forName("com.mysql.jdbc.Driver"); 
     Connection con = DriverManager.getConnection(url, uname1, password); 
     PreparedStatement pst = con.prepareStatement("INSERT into employee (time, name) VALUES (?,?)", Statement.RETURN_GENERATED_KEYS); 
     pst.setString(2, nme.getText()); 
     pst.executeUpdate(); 
    } catch (ClassNotFoundException ex) { 
     Logger.getLogger(demosub.class.getName()).log(Level.SEVERE, null, ex); 
    } catch (SQLException ex) { 
     Logger.getLogger(demosub.class.getName()).log(Level.SEVERE, null, ex); 
    } 
+0

コマンドラインアプリケーションで動作させる。まずは、 "java swing program" *とほぼ同じように動作するはずです。 –

+0

この列は自動インクリメント、時間、または名前ですか? –

+0

挿入しようとしているテーブルの構造を指定してください。 CREATE文として理解するのが最も簡単ですが、どの列がauto_increment列であるか、各列の型であるかを確認できます。 – MER

答えて

1

あなたはそのためのエラーを最初のパラメータをバインドするのを忘れていました。

pst.setString(1, "ValueYouWant"); 

それとも

pst.setTimestamp(1, <function_that_returns_a_timestamp>); 

が、そのために期待されている値の種類に応じて:あなただけのようなSTH言ってあなたは別のラインを持っている必要があり

pst.setString(2, nme.getText()); 

第二パラメータの値を設定しましたカラム。

現在のタイムスタンプを追加したくない場合は、time列のデフォルト値を表のCURRENT_TIMESTAMPに設定するだけです。

+0

私はその行を試してみますが、エラー –

+0

@rajeshdevaを返します。問題は、テーブル構造と仮定の間の接続が切断されている可能性があります。作っている。あなたの質問をテーブルのSQLで更新することを強くお勧めします(CREATE文はうまくいくでしょう)。 SQLを取得する方法がわからない場合は、可能な限り正確に表と列を記述するだけです。 – MER

関連する問題