У меня есть свойство, которое содержит строго типизированную строку набора данных. Я добавил процедуру вставки и обновления в свой набор данных. Если я передаю адаптеру строку, которая уже существует, она успешно обновляет информацию. Однако, если я создаю новую строку, она не будет вставлять ее в таблицу базы данных. Исключение никогда не будет выбрано, а возвращаемый 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 + ")");
}
}
Новый не может работать. Чтобы адаптер работал, ему нужен текстовый оператор SQL. У вас код не имеет SQL, поэтому Rowa/row всегда будет пустым. Таким образом, чтение не работает, поэтому трудно определить, записаны ли вы данные. – jdweng
Адаптер имеет приложение выбора, обновления и вставки SQL, прикрепленное к нему через соединение с базой данных и хранимую процедуру. Как я уже упоминал, обновление существующей строки работает, однако новый не вставляется. У Rowa есть данные и существует, это не null, а обновление не является ошибкой, оно просто возвращает 0. –
Что ??? Соединение не создает операторов SQL, если вы не делаете это в своем коде C# другим способом, который вы не отправляли. – jdweng