簡體   English   中英

插入具有自動遞增列的行

[英]insert row having auto increment column

我的表具有ID列,該列是主鍵並自動遞增,我正在嘗試使用Java(jdbc)這樣插入一行

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.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)

誰能幫我把這個插入..

使用insert ,應始終明確列出所有列(除非您真的知道自己在做什么):

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)");

但是正確的方法是:

  • 列出您要插入的列。
  • 設置日期/時間值的格式,使其清晰無誤。
  • 保持常量的類型與列的類型相似。

嘗試像這樣更改您的Query_String

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM