C# обновить базу данных доступа
I am able to Save Data to a Access databse , now when i add new entry i try to refresh the database but the new entry dont show until i close the program and open it back up. I have 2 buttons one Update and the other Refresh. I am using Parameters. It would be better to use one meathod to do both (thats over my head at the moment) so i have 2 buttons. I dont get any errors when i try to Refresh so I dont know where to start. Thanks My Update code working fine. <pre lang="c#"><pre>private void btnUpdate_Clicked(object sender, RoutedEventArgs e) { using (var myCon = new OleDbConnection(ConfigurationManager.ConnectionStrings["Connection"].ToString())) { using (var myCmd = new OleDbCommand("insert into [Sheet1](Box1,Box2,Box3,Box4,Box5,Box6,Box7,Box8)Values(@nm1,@nm2,@nm3,@nm4,@nm5,@nm6,@nm7,@nm8)", myCon)) { myCmd.Parameters.AddWithValue("@nm1", txt_Box1.Text); myCmd.Parameters.AddWithValue("@nm2", txt_Box2.Text); myCmd.Parameters.AddWithValue("@nm3", txt_Box3.Text); myCmd.Parameters.AddWithValue("@nm4", txt_Box4.Text); myCmd.Parameters.AddWithValue("@nm5", TXT_Box5.Text); myCmd.Parameters.AddWithValue("@nm6", txt_Box6.Text); myCmd.Parameters.AddWithValue("@nm7", txt_Box7.Text); myCmd.Parameters.AddWithValue("@nm8", txt_Box8.Text); try { myCon.Open(); int z = myCmd.ExecuteNonQuery(); if (z > 0) { MessageBox.Show("Data Inserted"); } } catch (Exception ex) { MessageBox.Show(ex.Message); return; } } } }
Мое обновление не обновляет базу данных без каких-либо ошибок givens.
private void btn_Refresh_Click(object sender, EventArgs e) { using (var myCon = new OleDbConnection(ConfigurationManager.ConnectionStrings["Connection"].ToString())) { using (var myCmd = new OleDbCommand("UPDATE Sheet1 SET Box1 =@nm1,Box2 = @nm2, Box3=@nm3, Box4 = @nm4, Box5 = @nm5,Box6 = @nm6, Box7 = @nm7 WHERE Box8 = @nm8", myCon)) { myCmd.Parameters.AddWithValue("@nm1", txt_Box1.Text); myCmd.Parameters.AddWithValue("@nm2", txt_Box2.Text); myCmd.Parameters.AddWithValue("@nm3", txt_Box3.Text); myCmd.Parameters.AddWithValue("@nm4", txt_Box4.Text); myCmd.Parameters.AddWithValue("@nm5", TXT_Box5.Text); myCmd.Parameters.AddWithValue("@nm6", txt_Box6.Text); myCmd.Parameters.AddWithValue("@nm7", txt_Box7.Text); myCmd.Parameters.AddWithValue("@nm8", txt_Box8.Text); try { myCon.Open(); int z = myCmd.ExecuteNonQuery(); MessageBox.Show("Data Updated"); } catch (Exception ex) { //Handle exception as needed } } } }
получить данные
private void loadgrid() { OleDbConnection con = new OleDbConnection(); con.ConnectionString = ConfigurationManager.ConnectionStrings["Connection"].ToString(); con.Open(); OleDbCommand cmd = new OleDbCommand(); cmd.CommandText = "Select * from [Sheet1]"; cmd.Connection = con; OleDbDataReader rd = cmd.ExecuteReader(); dataGrid.ItemsSource = rd; }
Что я уже пробовал:
Часы поиска в интернете и примеры программ
Dave Kreskowiak
Твой вопрос не имеет особого смысла. Оба ваших обработчика щелчков кнопок записывают данные в базу данных, которая, как я предполагаю, является рабочим листом Excel.
INSERT добавляет новые данные, а Update обновляет существующую запись.
Какое приложение вы пишете и где находится ваш код, который считывает данные базы данных и связывает их с любыми элементами управления, которые вы используете для отображения данных? Это код, который отсутствует и который вам нужно выполнить после выполнения операций SQL Insert или Update.
Dave Kreskowiak
Закрыть и снова открыть какой файл?
Кроме того, я с подозрением отношусь к тому, что вы называете файлом Access, если только у вас на самом деле нет таблицы в вашей базе данных Access под названием "Sheet1". Это обычно говорит мне Excel.