【问题标题】:CRUD Using Datagridview in C#在 C# 中使用 Datagridview 的 CRUD
【发布时间】:2018-10-11 08:07:11
【问题描述】:

我尝试在 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();
        }

    }

我尝试了很多其他方法,但我没有找到,如何克服这个问题。这里有人可以帮我解决这个问题吗? 提前谢谢你。

【问题讨论】:

  • 捕获 OracleException 并查看导致异常的确切原因

标签: c# crud


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-14
    • 2014-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多