DataAdapter не нужно открывать соединение с базой данных?

Я пытаюсь использовать DataAdapter в C#.net. и еще я что-то не понимаю про DataAdapter.

Я прочитал много статей и блогов о DataAdapter и DataReader.

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

Но,

//conn.Open();
AdsDataAdapter da;
da = new AdsDataAdapter("Select * from Test", conn);
AdsCommandBuilder cb;
cb = new AdsCommandBuilder(da);

DataSet ds = new DataSet();
da.Fill(ds, "Test");

DataRow newrow = ds.Tables["Test"].NewRow();
newrow["Name"] = "How about";
ds.Tables["Test"].Rows.Add(newrow);
da.Update(ds, "Test");

Когда я запускаю приведенный выше код, я получаю сообщение об ошибке, в котором говорится: «Соединение должно быть открыто».

Почему адаптер не может открыть соединение автоматически?

и я хочу вставить данные с помощью команды insertCommand (для этого теста я открыл соединение).

da.InsertCommand = new AdsCommand("INSERT INTO test (NAME) values('Insert Test #1')", conn);
//da.InsertCommand.ExecuteNonQuery(); // it works
da.Update(ds,"Test"); //but it does not works.

Много примеров с использованием Adapter.Update(), но у меня это не работает :(

Нет ошибок и ничего не вставлено.

и использование da.InsertCommand.ExecuteNonQuery(); вместо Update() это работает.

что я делаю не так?

Спасибо!

6
задан Steve 14 April 2012 в 13:22
поделиться