有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何从电子表格行项将准备好的语句循环到derby数据库

在使用预处理语句(pst)时,是否有办法将重复数据输入到一组数据库字段中?我用的是德比数据库

我有一个Excel电子表格,可以从中获取数据。每行有5个输入字段:行项目描述、成本、数量、扩展成本和价格。我想只使用五个条目将其输入到derby db中,但有多行,每个行都有电子表格中的五个条目。数据库包含以下字段: MATLINEITEM varchar 200 MATLINEITEMCOST varchar 7 MATLINEITEMQTY varchar 7 MATLINEITEMXCOST varchar 7 MATLINEITEMPRICE varchar 7

使用带“”的标准插件在这种方法中,我需要为每一行和每个电子表格字段设置一个条目。如果我有10行,那么我需要50行“准备好的声明”。我只想使用一个循环来读取每一行以及分配给该行的五个条目,并将其输入数据库

电子表格中的数据首先转换为字符串(使用POI)并分配给文本字段

addSQL = "INSERT INTO MATERIALTBL (MATLINEITEM, MATLINEITEMCOST, 
   MATLINEITEMQTY, MATLINEITEMXCOST, MATLINEITEMPRICE) VALUES (?,?,?,?,?) ";

   pst = conn.prepareStatement(addSQL);

  pst.setString(1,jtxtfld_Item.getText());
  pst.setString(2,jtxtfld_Cost.getText());
  pst.setString(3,jtxtfld_Qty.getText());
  pst.setString(4,jtxtfld_XCost.getText());
  pst.setString(5,jtxtfld_Price.getText());

  pst.executeUpdate();

任何帮助都将不胜感激。或者给我指出正确的方向,我可以用什么来获得这个结果。谢谢


共 (1) 个答案

  1. # 1 楼答案

    如果要插入多个insert语句,是可能的

    使用addBatch()executeBatch()PrepearedStamement方法

    创建一个PrepearedStatement,并向其中添加批,直到它准备好插入数据库

    范例

    String addSQL = "INSERT INTO MATERIALTBL (MATLINEITEM, MATLINEITEMCOST, 
           MATLINEITEMQTY, MATLINEITEMXCOST, MATLINEITEMPRICE) VALUES (?,?,?,?,?) ";
        PreparedStatemen pst = conn.prepareStatement(addSQL);
    
        //Set auto-commit to false
        conn.setAutoCommit(false);
    
    for (int i = 0; i < amountOfIterations; i++){
        // Set the variables
        pst.setString(1,jtxtfld_Item.getText());
        pst.setString(2,jtxtfld_Cost.getText());
        pst.setString(3,jtxtfld_Qty.getText());
        pst.setString(4,jtxtfld_XCost.getText());
        pst.setString(5,jtxtfld_Price.getText());
        // Add it to the batch
        pst.addBatch();
       } 
        //Create an int[] to hold returned values
        int[] count = stmt.executeBatch();
    
        //Explicitly commit statements to apply changes
        conn.commit();
    

    为什么要使用批次

    这个PrepearedStatement将只发送一次到数据库,并将一次插入所有行,从而节省对数据库的不必要调用