我嘗試在C#.net中使用DataAdapter。我仍然不明白DataAdapter的一些事情。DataAdapter不需要打開db連接?
我讀了很多關於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()。而不是更新(),它的工作原理。
我究竟做錯了什麼?
謝謝!
連接開放代碼的僞代碼已經由OP評論。它應該是一個評論。 – Pankaj 2012-04-14 13:26:43
@PankajGarg這正是OP代碼失敗的原因。我的理解是,當你發現錯誤時,你會發佈一個答案。 – Steve 2012-04-14 13:32:07
謝謝你的回答!填充到DataSet後,連接將被關閉,那麼在那之後,如果我們需要更新數據庫,那麼我們需要手動打開和關閉連接?你知道第二個問題嗎? – 2012-04-14 13:33:56