2017-02-06 9 views
0
私のテーブルに主キーと自動インクリメントされたID列、 私はこの

挿入行持つ自動インクリメント列

Class.forName("com.mysql.jdbc.Driver"); 
      Connection con1=DriverManager.getConnection("jdbc:mysql://localhost:3309/ikpems","root","system"); 
      Statement st1=con1.createStatement(); 
      st1.execute("insert into energymetersdata values('20_lab5a_daicel_20_kwh','06-02-2017 12:02:13','8422587','1','42772501540.0694')"); 

のようなJava(JDBC)を使用して行を挿入しようとしているが、私は思いをしている

エラーを取得:あなたはinsertを使用する場合

java.sql.SQLException: Column count doesn't match value count at row 1 
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:946) 
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2985) 
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1631) 
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1723) 

いずれかがこれを挿入する方法を私を助けてください..

+0

のようなあなたのQUERY_STRINGを変更するようにしてください。 –

答えて

1

を、あなたは常にべきリスト明示的にすべての列(あなたは本当にあなたが何をしているか知っている限り):

insert into energymetersdata(col1, col2, col3, col4, col5) 
    values('20_lab5a_daicel_20_kwh', '06-02-2017 12:02:13', '8422587', '1', '42772501540.0694')"); 

あなたはまた、ISO標準形式で日付の時間を置く必要があり、数値カラムに入る数値を引用する必要はありません。

insert into energymetersdata(col1, col2, col3, col4, col5) 
    values('20_lab5a_daicel_20_kwh', '2016-02-06 12:02:13', 8422587, 1, 42772501540.0694)"); 

最後に、あなたはは、私は強く、それを思いとどまらにもかかわらず、あなたがやりたいことができます。

insert into energymetersdata 
    values(DEFAULT, '20_lab5a_daicel_20_kwh', '2016-02-06 12:02:13', 8422587, 1, 42772501540.0694)"); 

正しいアプローチは:

  • 挿入する列を列挙します。
  • 日付/時刻の値を明確にするためにフォーマットします。
  • 定数の型は、列の型に似てください。
+0

私は2回目のst1.executeを実行しようとしたときに初めてこのクエリを挿入しようとしました( "energemetersdata値( '" + Statement.RETURN_GENERATED_KEYS + "'、 '20_lab5a_daicel_20_kwh'、 '06-02-2017 12:02 :13 '、' 8422587 '、' 1 '、' 42772501540.0694 ') ");私はこのエラーが発生しています:java.sql.SQLException:不正な整数値: 'DEFAULT'カラム 'ID'の行1で –

+1

@PraveenreddyあなたのID列がIDENTITY列の場合は列リストから除外し、値を挿入します。データベースは自動的にその列の値を割り当てます。 – Theo

+0

私は同じことをしました。私のコードを一度チェックしてください。 –

-1

`insert`、あなたべき*必ず*リストのすべての列を使用する場合

String Query_String = "INSERT INTO tablename(field1,field2) VALUES ('"+Text1+"','"+Text2+"')"; 
+0

DownvoteはSQLインジェクションに脆弱なソリューションを投稿しています。常にあなたのSQLをパラメータ化し、連結は悪です! – Theo

関連する問題