Как вставить числовое значение в таблицу доступа
Всем привет,
Последние 20 дней я пытаюсь вставить числовое значение в базу данных access, но я не могу вставить его оставшиеся два строковых значения вставлены успешно, но это числовое значение я не могу вставить все детали я вставляю с помощью datagridview и кода, написанного на событии dataGridView1_RowLeave
моя структура таблицы такова
Med_id- - - - & gt; автономер
Medicine_Name - - - - & gt; памятка
Dealer_name-- - - & gt;текст
Доступность - - - - - > номер
пожалуйста, друзья, помогите мне, я сейчас совершенно устала, чтобы делать различные рнд
Что я уже пробовал:
try { if (dataGridView1.IsCurrentRowDirty) { string connectionString = null; connectionString = ConfigurationManager.ConnectionStrings["AccessConnectionString"].ConnectionString; con.ConnectionString = connectionString; string cmd1 = "insert into Medicine_Available_Detail(Medicine_Name,Dealer_name,Availability) values(?,?,@Availability)"; OleDbCommand cmd = new OleDbCommand(cmd1, con); cmd.CommandType = CommandType.Text; string Medicine_Name = dataGridView1.Rows[e.RowIndex].Cells["Medicine_Name"].Value.ToString(); cmd.Parameters.AddWithValue("@Medicine_Name", Medicine_Name); string Dealer_name = dataGridView1.Rows[e.RowIndex].Cells["Dealer_name"].Value.ToString(); cmd.Parameters.AddWithValue("@Dealer_name", Dealer_name); //i reomve now try catch now its showing me exception Object cannot be cast from DBNull to other types. on below line int Availability =Convert.ToInt32 (dataGridView1.Rows[e.RowIndex].Cells["Availability"].Value);//this line cmd.Parameters.AddWithValue("@Availability", Availability); // i event try below code also but debugger always go else //int Availability = 0; //bool total_availablehasvalue = int.TryParse(dataGridView1.Rows[e.RowIndex].Cells["Availability"].Value.ToString(), out Availability); //if (total_availablehasvalue) //{ // cmd.Parameters.AddWithValue("@Availability", Availability); //} //else //{ // cmd.Parameters.AddWithValue("@Availability", DBNull.Value); //} con.Open(); int n = cmd.ExecuteNonQuery(); con.Close(); if (n > 0) { MessageBox.Show("Data Inserted Successfully", "Data Inserted ", MessageBoxButtons.OK, MessageBoxIcon.Information); } } } catch (Exception ex) { Load_data(); dataGridView1.Refresh(); } }
Загружать данные()
public void Load_data() { OleDbCommand cmd = con.CreateCommand(); cmd.CommandType = CommandType.Text; cmd.CommandText = "select Medicine_Name,Dealer_name,Availability from Medicine_Available_Detail"; DataTable dt = new DataTable(); OleDbDataAdapter adapater = new OleDbDataAdapter(cmd); adapater.Fill(dt); dataGridView1.DataSource = dt; }
OriginalGriff
И что?
Что происходит, когда вы используете этот код?
Atul Rokade
он ничего не показывает я тоже использовал degugger но он показывает мне нулевое значение когда отладчик идет на этот код
OriginalGriff
Где он показывает нуль?
Atul Rokade
@OriginalGriff : сэр, я улучшил вопрос
Atul Rokade
инт наличии;
bool accountHasValue = int.Метод tryparse(dataGridView1.Ряды[электронный.Параметр rowindex].Ячейки ["Доступность"]. Значение.ToString (), Out Availability);
если (accountHasValue)
{
УМК.Параметры.AddWithValue ("@Availability", Доступность);
}
ещё
{
УМК.Параметры.AddWithValue ("@Availability", DBNull.Ценность);
}
этот код я использовал в другом приложении для datagridview, он работает нормально, но тот же код, который я вставил в это приложение, - go cmd.Parameters.AddWithValue ("@Availability", DBNull.Ценность);
Atul Rokade
Сэр, вы можете мне помочь, как я могу хранить целое число ? какой-нибудь код или какое-нибудь предложение ?
Michael_Davies
Вы не называете параметры medicine_name или dealer_name в строке вставки, которую используете ? для обоих из них затем назовите доступность.
строка cmd1 = " вставить в medicine_available_detail (Medicine_Name,Dealer_name,Availability) значения (?,?,@Availability)";
Попробуй
строка cmd1 = " вставить в medicine_available_detail (Medicine_Name,Dealer_name,Availability) значения (@Medicine_Name,@Dealer_name,@Availability)";
Даже если это не решает проблему, это делает ее более читабельной.
Atul Rokade
@Michael_Davies : сэр, я улучшил вопрос , но все та же ошибка
Michael_Davies
Выглядеть одинаково. Измените код, попробуйте его, а затем обновите.
Atul Rokade
не получаю сэр