SqlDataAdapter.Fill() не работает

Armitage
Дата: 28.02.2006 15:03:45
автор
string connect ="Persist Security Info=false;Server=mySERV;Database=myDB;Integrated Security=true";
string select = "SELECT * "+"FROM myTable";
SqlConnection mySqlconnect = new SqlConnection(connect);
SqlCommand mySqlcommand = mySqlconnect.CreateCommand();
mySqlcommand.CommandText=select;
SqlDataAdapter myAdapter = new SqlDataAdapter();
myAdapter.SelectCommand=mySqlcommand;
DataSet myDataset = new DataSet();
mySqlconnect.Open();
myAdapter.Fill(myDataset, "myTable");
DataTable myTable = myDataset.Tables["myTable"];
DataRow newRow = myTable.NewRow();
newRow["Host"] = Dns.GetHostName().ToUpper();
newRow["Best"] = 585;
myTable.Rows.Add(newRow);
myTable.AcceptChanges();
foreach (DataRow row in myTable.Rows)
{
Console.WriteLine(row["row"]);
Console.WriteLine(row["row2"]+"");
}
myAdapter.Fill(myDataset, "myTable");

mySqlconnect.Close();

Блок foreach выводит все записи и те что были и ту что добавил, но в БД ничего не добавляется. Насколько я понял за это отвечает именно myAdapter.Fill(myDataset, "myTable");
Если тоже самое делать через Insert запрс в SqlCommand.CommandText то все работает как надо
gerss
Дата: 28.02.2006 15:54:12
myTable.AcceptChanges() выкинь, вместо него myAdapter.Update()

Fill() не добавляет в БД, а читает из нее. Все изменения в БД делаются Update-ом.

Сергей
Armitage
Дата: 28.02.2006 16:58:01
автор
myTable.AcceptChanges() выкинь, вместо него myAdapter.Update()

Так и сделал, терь выдает System.InvalidOperationException
saint
Дата: 28.02.2006 17:27:50
шоб Update работал нужно у адаптера настроить UpdateCommand, DeleteCommand и InsertCommand
Armitage
Дата: 28.02.2006 21:08:23
[quot автор]шоб Update работал нужно у адаптера настроить UpdateCommand, DeleteCommand и InsertCommand[quot автор]
мне кажется это не то при таком подходе DataSet ненужен становится. Мне интересно именно его использование, т.е. загружаем в него таблицу, правим ее а потом это все обратно в БД
Sa
Дата: 01.03.2006 08:47:55

Armitage

Так и сделал, терь выдает System.InvalidOperationException

Привидите StackTrace

uid = Sa

Posted via ActualForum NNTP Server 1.3

Armitage
Дата: 01.03.2006 11:37:46
автор
Привидите StackTrace

эм... это что такое ?
Sa
Дата: 01.03.2006 14:50:26

Armitage

эм... это что такое ?

вообще то RTFM. Чтобы понять можете поискать по .NET форумам по строке: StackTrace

uid = Sa

Posted via ActualForum NNTP Server 1.3

gerss
Дата: 01.03.2006 17:19:00
Armitage
[quot автор]шоб Update работал нужно у адаптера настроить UpdateCommand, DeleteCommand и InsertCommand
автор

мне кажется это не то при таком подходе DataSet ненужен становится. Мне интересно именно его использование, т.е. загружаем в него таблицу, правим ее а потом это все обратно в БД

Вот "обратно" как раз с помощью UpdateCommand, DeleteCommand и InsertCommand. До этого все данные - только в DataSet. А вообще, действительно, RTFM.
saint
Дата: 01.03.2006 17:40:19
Эрмитажу:
DataSet в .NET - это не Адовский рекордсет,
DataSet - отсоединенное хранилище и обновлять БД в СУБД он сам не умеет. (Что в общем-то хорошо)