【问题标题】:java sql column insertjava sql列插入
【发布时间】:2016-07-16 17:17:45
【问题描述】:

我创建了一个包含实际和预测列的表

我使用 SQL 和 JAVA 在表中的列中插入了一个大小为 220 的数组

st.execute("insert into host_1 (actual) values ('"+ac[j]+"')");

现在我尝试插入预测值

st.executeUpdate("insert into host_1 (exp_predict) values ('"+pre[i]+"')");

它从第 221 行插入。我希望它从第 0 行插入

请大家帮忙

【问题讨论】:

  • acpre 是什么关系?您应该在一个查询中插入两个值,或者运行更新查询来填充第二列。
  • 我执行了更新,从第 221 行开始更新
  • 你的表有没有主键,或者有帮助你识别寄存器的键?
  • MySQL 还是 MS SQL Server?不要标记未涉及的产品...

标签: java mysql sql arrays sql-server


【解决方案1】:

insert 语句总是创建一个新行。如果要为现有行设置值,则应使用 update 语句。或者,更好的是,同时插入两个值:

// Assume, or check, that ac and pre are the same size:
int size = ac.length;

PreparedStatement ps = 
    myConnection.prepareStatement
    ("INSERT INTO host_1 (actual, exp_predict) VALUES (?, ?)");
for (int i = 0; i < size; ++i) {
    ps.setString(1, ac[i]);
    ps.setString(2, pre[i]);
    ps.addBatch();
}
ps.executeBatch();

【讨论】:

    【解决方案2】:
    "insert into host_1 (actual) values ('"+ac[j]+"')" 
    

    Above 插入一整行。不只是列。

    【讨论】:

      【解决方案3】:

      您应该首先插入实际列,然后更新插入的行。你的第一个 SQL 没问题,你只需要修改第二个。

      st.executeUpdate("update host_1 set exp_predict = pre[i] where actual = ac[j]");
      

      【讨论】:

        【解决方案4】:

        您应该在同一个循环中使用 exp_predict 更新 host_1,条件为 like

        for(int i = 0; i<221; i++){
         st.execute("insert into host_1 (actual) values ('"+ac[j]+"')");
        
         st.executeUpdate("update host_1 set exp_predict = '"+pre[i]+"' where 
         actual = '"+ac[j]+"'
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2017-09-03
          • 2018-03-20
          • 1970-01-01
          • 1970-01-01
          • 2016-05-09
          • 2017-09-04
          • 2015-12-19
          相关资源
          最近更新 更多