2017-02-08 3 views
0

У меня есть свойство, которое содержит строго типизированную строку набора данных. Я добавил процедуру вставки и обновления в свой набор данных. Если я передаю адаптеру строку, которая уже существует, она успешно обновляет информацию. Однако, если я создаю новую строку, она не будет вставлять ее в таблицу базы данных. Исключение никогда не будет выбрано, а возвращаемый int всегда равен 0. Ни одна новая строка не была добавлена.Сильно типизированное обновление адаптера набора данных не будет вставлять новую строку

private MyDataset.MyDatasetGetDataRow _row; 

private MyDataset.MyDatasetGetDataRow Rowa 
{ 
    get { return _row; } 
    set { _row = value; } 
} 

public void NewOne() 
{  
    MyDatasetTableAdapters.MyDatasetGetDataTableAdapter adapter = new MyDatasetTableAdapters.MyDatasetGetDataTableAdapter(); 
    MyDataset.MyDatasetGetDataDataTable tbl = adapter.GetData(0, 0); 
    MyDataset.MyDatasetGetDataRow row = tbl.NewMyDatasetGetDataRow(); 
    Rowa = row;  
} 

public int Save() 
{ 
    try 
    { 
     int a = -99; 
     using (MyDatasetTableAdapters.MyDatasetGetDataTableAdapter adapter = new MyDatasetTableAdapters.MyDatasetGetDataTableAdapter()) 
     { 
      a = adapter.Update(tbl); 
     } 
     return a; 
    } 
    catch (Exception ex) 
    { 
     throw new Exception("Error: It didn't save. (" + ex.Message + ")"); 
    } 

}

+0

Новый не может работать. Чтобы адаптер работал, ему нужен текстовый оператор SQL. У вас код не имеет SQL, поэтому Rowa/row всегда будет пустым. Таким образом, чтение не работает, поэтому трудно определить, записаны ли вы данные. – jdweng

+0

Адаптер имеет приложение выбора, обновления и вставки SQL, прикрепленное к нему через соединение с базой данных и хранимую процедуру. Как я уже упоминал, обновление существующей строки работает, однако новый не вставляется. У Rowa есть данные и существует, это не null, а обновление не является ошибкой, оно просто возвращает 0. –

+0

Что ??? Соединение не создает операторов SQL, если вы не делаете это в своем коде C# другим способом, который вы не отправляли. – jdweng

ответ

0

Row не принадлежат к столу и поэтому набор данных не знал, что строка была добавлена ​​недавно.

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