从DataGridView导入数据到Oracle 11g的最佳方法

时间:2018-10-26 08:31:04

标签: c# winforms oracle11g

大家好,因为我是C#新手,所以想问您是否有更好的方法将数据从DataGridView导入Oracle 11g。最好举个例子。这是我当前的代码,我使用参数。由于我的驱动程序,我无法使用AddWithValue。谢谢

private void Btn_SAVE_IN_DATABASE_VEUPEN_Click(object sender, EventArgs e)
{
    for (int i = 0; i < dataGridView2.Rows.Count - 1; i++) //Schleife für INSERT Befehl
    {

        OracleConnection con = new OracleConnection("Data Source=(***********************");
        con.Open();

        string sql = "INSERT INTO AFTERSALES.INPUT_BOARDLEVEL_REPAIR_VEUPEN (BLR_REPORT_DATE, MONTH_OF_REPAIR_END, PCB_COUNTER, MANUFACTURER, REPORTING_OUTBOUND_DATE,  EMPTY,  QTY)"
                   + "VALUES (:BLR_REPORT_DATE, :MONTH_OF_REPAIR_END, :PCB_COUNTER, :MANUFACTURER, :REPORTING_OUTBOUND_DATE, :EMPTY, :QTY)";

        OracleCommand cmd = new OracleCommand(sql, con);
        cmd.Parameters.Add(":BLR_REPORT_DATE", Convert.ToDateTime(dataGridView2.Rows[i].Cells[0].Value).ToString("dd.MM.yyyy"));
        cmd.Parameters.Add(":MONTH_OF_REPAIR_END", dataGridView2.Rows[i].Cells[1].Value);
        cmd.Parameters.Add(":PCB_COUNTER", dataGridView2.Rows[i].Cells[2].Value);
        cmd.Parameters.Add(":MANUFACTURER", dataGridView2.Rows[i].Cells[3].Value);
        cmd.Parameters.Add(":REPORTING_OUTBOUND_DATE", Convert.ToDateTime(dataGridView2.Rows[i].Cells[4].Value).ToString("dd.MM.yyyy"));
        cmd.Parameters.Add(":EMPTY", dataGridView2.Rows[i].Cells[5].Value);
        cmd.Parameters.Add(":QTY", dataGridView2.Rows[i].Cells[6].Value);
        cmd.ExecuteNonQuery();
        con.Close();
    }
}

1 个答案:

答案 0 :(得分:0)

我的两分钱

1-为什么要从网格中读取?让您的一位同事在现有列之间添加一个新列,您的代码将创建垃圾。从基础数据源读取值

2-为什么要为每一行重新创建连接?一次创建一次,一次打开,插入     X行,将其关闭一次

3-我很可能会通过交易执行整个操作