2014-11-20 2 views
0

У меня есть источник данных, добавленный в мой проект C#, у него есть только несколько столбцов, и пользователь будет вводить данные и добавлять строки в базу данных, а также сможет искать определенные строки. Я не могу сохранить никаких изменений. Изменения появляются в моем DataGridView, когда я нажимаю кнопку «Добавить», но когда я заново запускаю свою программу (я ее создал и экспортировал, но не в режиме отладки), изменения от ранее не существуют. Почему это?Невозможно сохранить изменения в наборе данных

//called when the new entry button is clicked, adds new row into DB 
    private void CreatEnrtyBtn_Click(object sender, EventArgs e) 
    { 
     //Create new row to construct 
     BettingDB1DataSet.HorsesRow row = bettingDB1DataSet.Horses.NewHorsesRow(); 

     //Add values to row 
     row.HorseName = this.HorseNameBox.Text; 
     row.Trainer = this.TrainerNameBox.Text; 
     row.Place = this.PlaceBox.Text; 
     row.Location = this.LocationBox.Text; 
     row.Jockey = this.JockeyNameBox.Text; 
     row.Track = this.LocationBox.Text; 
     row.Ground = "temp"; 

     //Add row to DB and commit changes 
     bettingDB1DataSet.Horses.AddHorsesRow(row); 

     //tried both of these on their own, but neither work? 
     horsesTableAdapter.Update(bettingDB1DataSet.Horses); 
     horsesTableAdapter.Update(row); 
    } 

Как horsesTableAdapter создается в соответствии с просьбой:

 private BettingDB1DataSetTableAdapters.HorsesTableAdapter horsesAdapter; 


    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void Form1_Load(object sender, EventArgs e) 
    { 
     // TODO: This line of code loads data into the 'bettingDB1DataSet2.Horses' table. You can move, or remove it, as needed. 
     this.horsesTableAdapter.Fill(this.bettingDB1DataSet2.Horses); 
     this.dataGridView1.DataSource = bettingDB1DataSet.Horses; 

    } 
+0

Получают ли вы какие-либо исключения, или метод просто закончен, без каких-либо изменений в базе данных? –

+0

Все идет хорошо. Строка появляется в dataGrid, первичный ключ добавляется автоматически и все. Но когда программа открыта снова, никаких изменений не было. – silent

+0

@silent Проблема, которую вы описываете, заключается в том, что ничто не загружается * в сетку после перезапуска программы. Вы действительно подтвердили, что ничего не было изменено в самой БД? – BartoszKP

ответ

0
  1. Вы заполняете ставкуDB1DataSet2 с помощью вашего адаптера данных.
  2. Вы передаете ставки на сетку данных DB1DataSet.
  3. Вы обновляете bettingDB1DataSet.

Возможно, в этом и проблема.

+0

Кажется, это причина, мой проект hass стал немного грязным, поэтому я собираюсь переделать его, принимая во внимание всю помощь. благодаря – silent

0

Приняли ли вы набора данных изменений перед обновлением ???.

bettingDB1DataSet.Acceptchanges(); horseTableAdapter.Update (bettingDB1DataSet.Horses);

+0

Я пробовал это раньше и ничего не делал, я также читал, что AcceptChanges() отмечает отредактированные строки как отредактированные, поэтому, если я вызываю это перед обновлением(), тогда он не будет знать, что строки требуют сохранения? – silent

+0

Можете ли вы показать, как вы создаете свой татуировщик лошадей? – Harval

+0

Конечно, сейчас я отредактирую OP. – silent

Смежные вопросы