ADO.NET里最简单的添加记录的方式是什么?闹了半天,发现ADO.NET怎么还不如ADO呢?怎么实现ADO里的AddNew呢?
闹了半天,发现ADO.NET怎么还不如ADO呢?怎么实现ADO里的这个常用功能呢?
在ADO里,我想添加记录,可以这样写:
m_pRecset.CreateInstance("ADODB.Recordset");
m_pRecset->Open("select * from Result",_variant_t((IDispatch*)theApp.m_pConnection,true),adOpenDynamic,adLockOptimistic,adCmdText);
m_pRecset->MoveLast();
m_pRecset->AddNew();
m_pRecset->PutCollect("ID",...);
m_pRecset->PutCollect("RoadNum",vroadNum);
m_pRecset->PutCollect("userName",_variant_t(theApp.user_Nmae));
m_pRecset->PutCollect("userID",_variant_t(theApp.user_ID));
m_pRecset->PutCollect("owner",_variant_t(city));
m_pRecset->PutCollect("saveTime",_variant_t(tm));
m_pRecset->Update();
可是,在ADO.NET里,就只有自己装配SQL语句了,
在C#里我这样,
SqlDataAdapter da;
SqlCommandBuilder scb;
da = new SqlDataAdapter("select * from tbTree", SqlClass.strConnection);
scb = new SqlCommandBuilder(da);
DataSet ds = new DataSet("ds");
da.Fill(ds, "tbTree");
DataTable dt = ds.Tables[0];
DataRow dr = dt.NewRow();
dr["context"] = "ee";
dr["parentid"] = 4;
//dt.AcceptChanges();
//ds.AcceptChanges();
da.Update(ds, "tbTree");
可是不成功。
------解决方案-------------------- 哥子,newrow了要add到rows集中中呀
按你的方法,更新数据库前需要datatable.getchanges()取得数据集的变更集合呀,这样取得的数据集才有需要的行状态以便ado.net生成相应的sql语句
------解决方案-------------------- 引用: 你要设置sqldataadapter的insertcommand属性,
就你这个示例就是sda.insertcommand = scb.getinsertcommand()
看了一下你代码,你用了newRow后,还要调用ds.Tables[0].Rows.Add(newRow)