我尝试在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