怎样将数据集传给存储过程 要是我,我就写一个存储过程,只处理一个id,然后代码里面来一个循环,处理一组ID,也许效率会稍微差一点 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 将这组数据保存到一个Table中,设定Table的InsertCommand然后,调用Table的Update就OK了 将这组数据保存到一个Table中,设定Table的InsertCommand然后,调用Table的Update就OK了同意 用SQL SERVER的用户自定义函数写个函数,作用是分解ID连结的字符串(比如“1|2|3|4|5|”),然后根据“|”号算出ID号总数。在存储过程中调用那个函数,根据求出的ID总数循环处理你需要的数据。 用dataset!参考:public bool SaveSpecialityOpinionF(DataTable Info) { bool InsertFlag = true; SqlConnection sqlcon = new SqlConnection(Configuration.ConnectionString); sqlcon.Open(); int mt = Info.Rows.Count; SqlTransaction oSqlTran =sqlcon.BeginTransaction(); try { for(int i=0;i<Info.Rows.Count;i++) { InserSpecialityOpinionF(sqlcon,oSqlTran, Info.Rows[i]["dxgcbh"].ToString(), Info.Rows[i]["zymcid"].ToString(), Info.Rows[i]["opioion"].ToString(), Info.Rows[i]["result"].ToString(), Info.Rows[i]["userid"].ToString(), Info.Rows[i]["username"].ToString() ); } oSqlTran.Commit(); } catch(Exception e) { oSqlTran.Rollback(); InsertFlag = false; throw(e); } finally { sqlcon.Close(); sqlcon = null; Info = null; } return InsertFlag; } #endregionpublic void InserSpecialityOpinionF(SqlConnection SqlConn,SqlTransaction sqlTrans, string vDxgcbh,string vZyid,string vOpinion,string Vscjl,string vUserID,string vUserName) { SqlCommand oSqlCom = new SqlCommand("AssinInserZYRY",SqlConn,sqlTrans); oSqlCom.CommandType = CommandType.StoredProcedure; oSqlCom.CommandText = "SpecialityOpinionInsertF"; oSqlCom.Parameters.Add(new SqlParameter("@dxgcbh", SqlDbType.NVarChar, 20)); oSqlCom.Parameters["@dxgcbh"].Value = vDxgcbh; oSqlCom.Parameters.Add(new SqlParameter("@zyid", SqlDbType.NVarChar, 20)); oSqlCom.Parameters["@zyid"].Value = vZyid; oSqlCom.Parameters.Add(new SqlParameter("@userid", SqlDbType.NVarChar, 20)); oSqlCom.Parameters["@userid"].Value = vUserID; oSqlCom.Parameters.Add(new SqlParameter("@opinion", SqlDbType.NVarChar, 20)); oSqlCom.Parameters["@opinion"].Value = vOpinion; oSqlCom.Parameters.Add(new SqlParameter("@scjl", SqlDbType.NVarChar, 20)); oSqlCom.Parameters["@scjl"].Value = Vscjl; oSqlCom.Parameters.Add(new SqlParameter("@cendate", SqlDbType.NVarChar, 20)); oSqlCom.Parameters["@cendate"].Value = DateTime.Now; oSqlCom.Parameters.Add(new SqlParameter("@username", SqlDbType.NVarChar, 20)); oSqlCom.Parameters["@username"].Value = vUserName; oSqlCom.ExecuteNonQuery(); } 【求助】一个布点的程序,希望能给一点思路 C#调用windows 【100分+200答谢分】谁做过p2p通讯的东西,进来给我指点指点 vs2008中AutoCompleteExtender使用问题 c# winfrom c++中的serverSocket控件在c#中对应的是哪个 C#调用win32 API的问题 请教怎么在程序执行过程中暂停一段时间后在执行下面的??? 查找替换 c#调用c++动态链接库 绘制直线、巨型以及在用户模式下编辑所画的对象,如何解决? 在自定义控件中怎样判断设计时还是运行时? 各位,在datagrid中如何进行多行选择,谢谢
设定Table的InsertCommand
然后,调用Table的Update就OK了
设定Table的InsertCommand
然后,调用Table的Update就OK了同意
在存储过程中调用那个函数,根据求出的ID总数循环处理你需要的数据。
参考:
public bool SaveSpecialityOpinionF(DataTable Info)
{
bool InsertFlag = true;
SqlConnection sqlcon = new SqlConnection(Configuration.ConnectionString);
sqlcon.Open();
int mt = Info.Rows.Count;
SqlTransaction oSqlTran =sqlcon.BeginTransaction();
try
{
for(int i=0;i<Info.Rows.Count;i++)
{
InserSpecialityOpinionF(sqlcon,oSqlTran,
Info.Rows[i]["dxgcbh"].ToString(),
Info.Rows[i]["zymcid"].ToString(),
Info.Rows[i]["opioion"].ToString(),
Info.Rows[i]["result"].ToString(),
Info.Rows[i]["userid"].ToString(),
Info.Rows[i]["username"].ToString()
);
}
oSqlTran.Commit();
}
catch(Exception e)
{
oSqlTran.Rollback();
InsertFlag = false;
throw(e);
}
finally
{
sqlcon.Close();
sqlcon = null;
Info = null; }
return InsertFlag;
}
#endregionpublic void InserSpecialityOpinionF(SqlConnection SqlConn,SqlTransaction sqlTrans,
string vDxgcbh,string vZyid,string vOpinion,string Vscjl,string vUserID,string vUserName)
{
SqlCommand oSqlCom = new SqlCommand("AssinInserZYRY",SqlConn,sqlTrans);
oSqlCom.CommandType = CommandType.StoredProcedure;
oSqlCom.CommandText = "SpecialityOpinionInsertF";
oSqlCom.Parameters.Add(new SqlParameter("@dxgcbh", SqlDbType.NVarChar, 20));
oSqlCom.Parameters["@dxgcbh"].Value = vDxgcbh;
oSqlCom.Parameters.Add(new SqlParameter("@zyid", SqlDbType.NVarChar, 20));
oSqlCom.Parameters["@zyid"].Value = vZyid;
oSqlCom.Parameters.Add(new SqlParameter("@userid", SqlDbType.NVarChar, 20));
oSqlCom.Parameters["@userid"].Value = vUserID;
oSqlCom.Parameters.Add(new SqlParameter("@opinion", SqlDbType.NVarChar, 20));
oSqlCom.Parameters["@opinion"].Value = vOpinion;
oSqlCom.Parameters.Add(new SqlParameter("@scjl", SqlDbType.NVarChar, 20));
oSqlCom.Parameters["@scjl"].Value = Vscjl;
oSqlCom.Parameters.Add(new SqlParameter("@cendate", SqlDbType.NVarChar, 20));
oSqlCom.Parameters["@cendate"].Value = DateTime.Now;
oSqlCom.Parameters.Add(new SqlParameter("@username", SqlDbType.NVarChar, 20));
oSqlCom.Parameters["@username"].Value = vUserName;
oSqlCom.ExecuteNonQuery();
}