обновить в MS доступ с помощью C # - PullRequest
0 голосов
/ 14 мая 2018

Может кто-нибудь помочь, что не так с моим кодом? это функция обновления, и во время отладки она выполняется правильно, но не обновляет мою базу данных. Я уже ищу ответ на эту проблему, но все же он не работает. я также пытаюсь создать новую базу данных, надеясь, что это проблема, но все равно ничего не дает.

private void update_Click(object sender, EventArgs e)
{
DataTable dt = new DataTable();
OleDbConnection con = new OleDbConnection();
con.ConnectionString = @"Provider = Microsoft.ACE.OLEDB.12.0; Data Source = C:\Users\sherilyn & justine\Documents\Visual Studio 2015\Projects\jollibee4\jollibee4\jollibee.accdb";
con.Open();
OleDbCommand cmd = new OleDbCommand();
cmd.Connection = con;
String id = dataGridView1.SelectedRows[0].Cells[0].Value + String.Empty;
int id1 = Int32.Parse(id);
try
{
if (database.selectedIndex == 0)
{
cmd.CommandText = "update Breakfast_Meals set [Meals] = @meals, [Price] = @price, [Picture] = @picture, [Description] = @description WHERE [Item ID]=@id";
}
else if (database.selectedIndex == 1)
{
cmd.CommandText = "update Burger_Sandwhich_Meals set [Meals] = @meals, [Price] = @price, [Picture] = @picture, [Description] = @description WHERE [Item ID]=@id";
}
else if (database.selectedIndex == 2)
{
cmd.CommandText = "update Chicken_Meals set [Meals] = @meals, [Price] = @price, [Picture] = @picture, [Description] = @description WHERE [Item ID]=@id";
}
else if (database.selectedIndex == 3)
{
cmd.CommandText = "update Dessert set [Meals] = @meals, [Price] = @price, [Picture] = @picture, [Description] = @description WHERE [Item ID]=@id";
}
else if (database.selectedIndex == 4)
{
cmd.CommandText = "update Kids_Meals set [Meals] = @meals, [Price] = @price, [Picture] = @picture, [Description] = @description WHERE [Item ID]=@id";
}
else if (database.selectedIndex == 5)
{
cmd.CommandText = "update RiceMeals_NoodlesMeals set [Meals] = @meals, [Price] = @price, [Picture] = @picture, [Description] = @description WHERE [Item ID]=@id";
}
else if (database.selectedIndex == 6)
{
cmd.CommandText = "update Side_Items set [Meals] = @meals, [Price] = @price, [Picture] = @picture, [Description] = @description WHERE [Item ID]=@id";
}
else if (database.selectedIndex == 7)
{
cmd.CommandText = "update Value_Meals set [Meals] = @meals, [Price] = @price, [Picture] = @picture, [Description] = @description WHERE [Item ID]=@id";
}
cmd.Parameters.AddWithValue("@id", id1);
cmd.Parameters.AddWithValue("@meals", meal.Text);
int mealPrice = Int32.Parse(price.Text);
cmd.Parameters.AddWithValue("@price", mealPrice);
cmd.Parameters.AddWithValue("@picture", savePhoto());
cmd.Parameters.AddWithValue("@description",description.Text);
DialogResult dialogResult = MessageBox.Show("Are you sure you want to change the data?","Warning", MessageBoxButtons.YesNo,MessageBoxIcon.Warning);
if (dialogResult == DialogResult.Yes)
{
cmd.ExecuteNonQuery();
con.Close();
}
else if (dialogResult == DialogResult.No)
{
con.Close();
}
OleDbDataAdapter adapter = new OleDbDataAdapter(cmd);
adapter.Fill(dt);
dataGridView1.DataSource = dt;
database_onItemSelected(sender, e);//to view dgv data for the selected index
con.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK,MessageBoxIcon.Error);
con.Close();
}
}

1 Ответ

0 голосов
/ 14 мая 2018

Добавьте параметры в правильном порядке, как ожидается заполнителями.

cmd.Parameters.AddWithValue("@meals", meal.Text);
int mealPrice = Int32.Parse(price.Text);
cmd.Parameters.AddWithValue("@price", mealPrice);
cmd.Parameters.AddWithValue("@picture", savePhoto());
cmd.Parameters.AddWithValue("@description",description.Text);
cmd.Parameters.AddWithValue("@id", id1);

OleDb разрешает значения параметров не по их имени, а по положению параметра в коллекции параметров.При вашем заказе условие id в предложении where получает значение из параметра description.

Рассмотрим также использование Add вместо AddWithValue

См .: Можем ли мы прекратить использовать AddWithValue уже?

...