我们知道在C#和VB.net中,已经不推荐用ADODB了,但是用ADO.net中的各种添加记录的方法时,都很麻烦,而且针对不同的数据提供器,取得自动编号的方法各不相同,多么怀念ADODDB中的:
Rs.Open("SELECT TOP 1 * FROM [YourTable]", Conn, adOpenKeyset, adLockOptimistic, adCmdText);
Rs.AddNew(vtMissing, vtMissing);
Rs.Fields["FiledA_Name"].Value = FiledA_Value;
Rs.Fields["FiledB_Name"].Value = FiledB_Name;
Rs.UpdateBatch(adAffectCurrent);
long nNewItemID = (long)Rs.Fields["_ID"].Value;
Rs.Close();
其实在C#中也可以用ADODB,只需要在工程的引用中添加C:\Program Files\Common Files\System\ado\msado15.dll,并这样定义vtMissing:
System.Reflection.Missing vtMissing = System.Reflection.Missing.Value;
下面样式的代码就完全可用了:
ADODB.Recordset Rs = new ADODB.Recordset();
string sSql = "SELECT TOP 1 * FROM [YourTable]";
Rs.Open(sSql, Conn, ADODB.CursorTypeEnum.adOpenKeyset, ADODB.LockTypeEnum.adLockOptimistic, (int)ADODB.CommandTypeEnum.adCmdText);
Rs.AddNew(vtMissing, vtMissing);
Rs.Fields["FiledA_Name"].Value = FiledA_Value;
Rs.Fields["FiledB_Name"].Value = FiledB_Name;
Rs.UpdateBatch(ADODB.AffectEnum.adAffectCurrent);
long nNewItemID = Convert.ToInt64(Rs.Fields["_ID"].Value);
Rs.Close();