0

当我尝试在 C# 中执行我的编码程序时,我收到了错误信息。我尝试在 C# 中使用 datagridview 插入数据,但是当我尝试时,我得到了这个错误信息。“Oracle.DataAccess.dll 中发生了 'Oracle.DataAccess.Client.OracleException' 类型的未处理异常附加信息:外部组件已引发异常”。这是我的编码程序;

private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
    {
        INST_NO = dataGridView1.Rows[e.RowIndex].Cells["INST_NO"].Value.ToString();

        if (INST_NO == "")
        {
            INST_NO1 = 0;
        }
        else
        {
              INST_NO1 = Convert.ToInt32(dataGridView1.Rows[e.RowIndex].Cells["INST_NO"].Value.ToString());
        }
        if (INST_NO1 == 0)
        {
            OracleCommand cmd = conn.CreateCommand();
            cmd.CommandType = CommandType.Text;
            cmd.CommandText = "INSERT INTO TMCI_IM_PROD VALUES('" + dataGridView1.Rows[e.RowIndex].Cells["INST_NO"].Value.ToString() + "', '" + dataGridView1.Rows[e.RowIndex].Cells["ITM_CD"].Value.ToString() + "', '" + dataGridView1.Rows[e.RowIndex].Cells["LINE_CD"].Value.ToString() + "', '" + dataGridView1.Rows[e.RowIndex].Cells["PROD_LOC_CD"].Value.ToString() + "', '" + dataGridView1.Rows[e.RowIndex].Cells["PROD_SCHD_QTY"].Value.ToString() + "', '" + dataGridView1.Rows[e.RowIndex].Cells["PROD_ST_SCHD_DT"].Value.ToString() + "', '" + dataGridView1.Rows[e.RowIndex].Cells["PROD_END_SCHD_DT"].Value.ToString() + "','" + dataGridView1.Rows[e.RowIndex].Cells["ORD_STS_TYP"].Value.ToString() + "', '" + dataGridView1.Rows[e.RowIndex].Cells["CAVITY"].Value.ToString() + "', '" + dataGridView1.Rows[e.RowIndex].Cells["RESULT_1"].Value.ToString() + "', '" + dataGridView1.Rows[e.RowIndex].Cells["RESULT_2"].Value.ToString() + "', '" + dataGridView1.Rows[e.RowIndex].Cells["TRANSFER_1"].Value.ToString() + "', '" + dataGridView1.Rows[e.RowIndex].Cells["TRANSFER_2"].Value.ToString() + "', '" + dataGridView1.Rows[e.RowIndex].Cells["INS_TS"].Value.ToString() + "', '" + dataGridView1.Rows[e.RowIndex].Cells["INS_USR_CD"].Value.ToString() + "', '" + dataGridView1.Rows[e.RowIndex].Cells["UPD_TS"].Value.ToString() + "', '" + dataGridView1.Rows[e.RowIndex].Cells["UNIT_WT"].Value.ToString() + "')";
            cmd.ExecuteNonQuery();
            fill_grid();
        }
        else
        {
            OracleCommand cmd = conn.CreateCommand();
            cmd.CommandType = CommandType.Text;
            cmd.CommandText = "UPDATE TMCI_IM_PROD SET INST_NO='" + dataGridView1.Rows[e.RowIndex].Cells["ITM_CD"].Value.ToString() + "', '" + dataGridView1.Rows[e.RowIndex].Cells["LINE_CD"].Value.ToString() + "', '" + dataGridView1.Rows[e.RowIndex].Cells["PROD_LOC_CD"].Value.ToString() + "', '" + dataGridView1.Rows[e.RowIndex].Cells["PROD_SCHD_QTY"].Value.ToString() + "', '" + dataGridView1.Rows[e.RowIndex].Cells["PROD_ST_SCHD_DT"].Value.ToString() + "', '" + dataGridView1.Rows[e.RowIndex].Cells["PROD_END_SCHD_DT"].Value.ToString() + "','" + dataGridView1.Rows[e.RowIndex].Cells["ORD_STS_TYP"].Value.ToString() + "', '" + dataGridView1.Rows[e.RowIndex].Cells["CAVITY"].Value.ToString() + "', '" + dataGridView1.Rows[e.RowIndex].Cells["RESULT_1"].Value.ToString() + "', '" + dataGridView1.Rows[e.RowIndex].Cells["RESULT_2"].Value.ToString() + "', '" + dataGridView1.Rows[e.RowIndex].Cells["TRANSFER_1"].Value.ToString() + "', '" + dataGridView1.Rows[e.RowIndex].Cells["TRANSFER_2"].Value.ToString() + "', '" + dataGridView1.Rows[e.RowIndex].Cells["INS_TS"].Value.ToString() + "', '" + dataGridView1.Rows[e.RowIndex].Cells["INS_USR_CD"].Value.ToString() + "', '" + dataGridView1.Rows[e.RowIndex].Cells["UPD_TS"].Value.ToString() + "', '" + dataGridView1.Rows[e.RowIndex].Cells["UNIT_WT"].Value.ToString() + "' WHERE INST_NO=" + INST_NO1 + "";
            cmd.ExecuteNonQuery();
            fill_grid();
        }

    }

我尝试了许多其他方法,但我没有找到它,如何克服这个问题。这里有人可以帮我解决这个问题吗?先感谢您。

4

1 回答 1

0

这不是应该使用 datagridview 的方式,但要正确解释它将是一项艰巨的任务。基本上,datagridview 不应该用作数据的存储,它应该只连接到数据源(DataTable),即数据存储容器。您只需将 DGV 用作用户单击、输入等以更改数据表中的数据的设备,然后使用 tableadapter 将更新发送回数据库。转到此处:https ://msdn.microsoft.com/en-us/library/fxsa23t6.aspx并从“创建简单数据应用程序”教程开始

这样,您的应用程序最终可以更好地表示 MVC 理论 - 模型是数据表,视图(显示数据的设备)和控制(更改数据的设备)由 datagridview 完成

于 2018-10-11T08:13:12.577 回答