CRUD Использование Datagridview в C # - PullRequest
0 голосов
/ 11 октября 2018

Я получил информацию об ошибке, когда пытался выполнить свою программу кодирования на C #.Я пытаюсь вставить данные, используя datagridview в C #, но когда я попытался, я получил эту информацию об ошибке. "Необработанное исключение типа 'Oracle.DataAccess.Client.OracleException' произошло в Oracle.DataAccess.dll Дополнительная информация: внешний компонент выдал исключение" .Вот моя программа кодирования:

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();
        }

    }

Я пытался многими другими способами, но я не нашел, как преодолеть эту проблему.Кто-нибудь может помочь мне решить эту проблему?Заранее спасибо.

1 Ответ

0 голосов
/ 11 октября 2018

Это не тот способ, которым предполагается использовать сетку данных, но его правильное объяснение было бы довольно большим делом.По сути, datagridview не следует использовать в качестве хранилища данных, его нужно просто подключить к источнику данных (DataTable), а это контейнер для хранения данных.Вы просто используете DGV в качестве устройства, по которому пользователь может щелкнуть, введите и т. Д., Чтобы изменить данные в таблице данных, а затем используете табличный адаптер для отправки обновлений обратно в базу данных.Перейдите сюда: https://msdn.microsoft.com/en-us/library/fxsa23t6.aspx и начните с учебного пособия «Создание простого приложения данных»

Таким образом, ваше приложение в конечном итоге дает лучшее представление о теории MVC - модель представляет собой представление данных с данными (устройство)который показывает данные), а управление (устройство, которое изменяет данные) осуществляется с помощью datagridview

...