asp.net 执行带多个参数的存储过程 RT 单个参数的我会 但是多个找了下网上实例代码 貌似都太麻烦 在asp里面执行多个参数的存储过程倒是蛮简单的 难道到了。net里面反而复杂了? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 cmd.Parameters.Add(参数名,SqlDbType.VarChar,4).Value=变量; .NET把参数做成了参数集合,楼主依着:smallmaster(来自腐败机构FBI)的方法即可给执行添加多个参数.实现方式表面上比ASP复杂了点,但这样更科学! http://community.csdn.net/Expert/topic/5586/5586585.xml?temp=.7846033 SqlParameter[] parameters = { new SqlParameter("@fhaid",SqlDbType.UniqueIdentifier), new SqlParameter("@archivesnum",SqlDbType.NVarChar ,30), new SqlParameter("@holdername", SqlDbType.NVarChar ,100), new SqlParameter("@personnum", SqlDbType.Int ,4), new SqlParameter("@familytype", SqlDbType.NVarChar ,50), new SqlParameter("@telephone", SqlDbType.Char ,20), new SqlParameter("@town", SqlDbType.NVarChar ,50), new SqlParameter("@village", SqlDbType.NVarChar ,50), new SqlParameter("@country", SqlDbType.NVarChar ,50), new SqlParameter("@creationdoctor", SqlDbType.NVarChar ,50), new SqlParameter("@archivescreationdate", SqlDbType.DateTime), new SqlParameter("@communityservice", SqlDbType.NVarChar ,100), new SqlParameter("@creationdate", SqlDbType.NChar ,10), new SqlParameter("@lastupdatedate", SqlDbType.DateTime) }; parameters[0].Value = model.FHAID; parameters[1].Value = model.ArchivesNum; parameters[2].Value = model.HolderName; parameters[3].Value = model.PersonNum; parameters[4].Value = model.FamilyType; parameters[5].Value = model.Telephone; parameters[6].Value = model.Towm; parameters[7].Value = model.Village; parameters[8].Value = model.Country; parameters[9].Value = model.CreationDoctor; parameters[10].Value = model.ArchivesCreationDate; parameters[11].Value = model.CommunityService; parameters[12].Value = model.CreationDate; parameters[13].Value = model.LastUpdateDate; 很复杂么? public DataSet GetTopics(int forumID, int pageNumber, int pageSize) { SqlConnection cn = new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"]); SqlDataAdapter da = new SqlDataAdapter("sp_Forums_GetTopicsByPage", cn); da.SelectCommand.CommandType = CommandType.StoredProcedure; SqlParameter[] parameters = { new SqlParameter("@ForumID", SqlDbType.Int, 4), new SqlParameter("@PageNumber", SqlDbType.Int, 4), new SqlParameter("@PageSize", SqlDbType.Int, 4) }; parameters[0].Value = forumID; parameters[1].Value = pageNumber; parameters[2].Value = pageSize; foreach (SqlParameter parameter in parameters) { da.SelectCommand.Parameters.Add(parameter); } DataSet ds = new DataSet(); cn.Open(); da.Fill(ds); cn.Close(); return ds; } public int TestPageInsert(TestPageInfo test) { string sql = "s_TestPage_Insert"; SqlCommand sqlcmd = new SqlCommand(sql,DwzxConfiguration.ConnectDB() ,DwzxConfiguration.SqlTran); sqlcmd.CommandType = CommandType.StoredProcedure; sqlcmd.Parameters.Add("@Title",SqlDbType.VarChar ,50).Value=test.Title ; sqlcmd.Parameters.Add("@starttime", SqlDbType.DateTime).Value = test.StartTime ; sqlcmd.Parameters.Add("@onenum",SqlDbType.Int ,4).Value=test.OneNum ; sqlcmd.Parameters.Add("@onestore",SqlDbType.Int ,4).Value=test.OneStore ; sqlcmd.Parameters.Add("@manynum",SqlDbType.Int ,4).Value=test.ManyNum ; sqlcmd.Parameters.Add("@manystore", SqlDbType.Int, 4).Value = test.ManyStore ; sqlcmd.Parameters.Add("@finishtime",SqlDbType.Int ,4).Value= test.FinishTime ; sqlcmd.Parameters.Add("@Questionlistid", SqlDbType.Int, 4).Value = test.Questionlistid; sqlcmd.Parameters.Add("@RETURN_VALUE", SqlDbType.Int, 4).Direction = ParameterDirection.ReturnValue; sqlcmd.ExecuteNonQuery(); int Flag = (int) sqlcmd.Parameters["@RETURN_VALUE"].Value; return Flag; } 代码是比asp要多了点,但是看起来很清楚也更科学的。 那是,还好我不是从ASP过渡的,不然以前的日子好苦喔,代码和设计在一个文件里搞定。 我就是从ASP过渡过来的每天累死累活的 还不太习惯 我是不会asp,不过asp.net的参数传递没有如LZ想像中的那么复杂呀!哈哈 这个问题问的好奇怪啊单个参数会那多Add几个不就是多个参数了 搞那么复杂干嘛 直接传递sql执行不就行了。public int Execute(String strSql){ SqlCommand Cmd = new SqlCommand(strSql, _Connection); try{ return Cmd.ExecuteNonQuery(); }catch(Exception e){ _LastErrorInfo = e.Message; Error.Log(e.Message + "\n" + e.Source + "\n" + e.StackTrace); return 0; }} nosuchtracter ,test是个结果集吗?这样赋值是怎么回事情? amandag ,你写的这个调用存储过程干嘛需要适配器?直接Add不可以吗?请教。 repeater按钮问题 如何在datagrid中显示缩略图,点击显示原图大小 关于url重写的问题,高手进 在asp.net中怎样得到用Dhtml动态生成的表格数据? 要分我给 不过得帮 将textbox 的值 convert money .net 不能写入数据 到 excel导入的模板里 求救!新手上路!大哥,大姐...... dataGrid编辑问题 关于一个查询的问题 calendar显示非当前日期的问题!急!! 关于asp.net 发布网站不成功问题? 生成流水号问题
实现方式表面上比ASP复杂了点,但这样更科学!
new SqlParameter("@fhaid",SqlDbType.UniqueIdentifier),
new SqlParameter("@archivesnum",SqlDbType.NVarChar ,30),
new SqlParameter("@holdername", SqlDbType.NVarChar ,100),
new SqlParameter("@personnum", SqlDbType.Int ,4),
new SqlParameter("@familytype", SqlDbType.NVarChar ,50),
new SqlParameter("@telephone", SqlDbType.Char ,20),
new SqlParameter("@town", SqlDbType.NVarChar ,50),
new SqlParameter("@village", SqlDbType.NVarChar ,50),
new SqlParameter("@country", SqlDbType.NVarChar ,50),
new SqlParameter("@creationdoctor", SqlDbType.NVarChar ,50),
new SqlParameter("@archivescreationdate", SqlDbType.DateTime),
new SqlParameter("@communityservice", SqlDbType.NVarChar ,100),
new SqlParameter("@creationdate", SqlDbType.NChar ,10),
new SqlParameter("@lastupdatedate", SqlDbType.DateTime)
};
parameters[0].Value = model.FHAID;
parameters[1].Value = model.ArchivesNum;
parameters[2].Value = model.HolderName;
parameters[3].Value = model.PersonNum;
parameters[4].Value = model.FamilyType;
parameters[5].Value = model.Telephone;
parameters[6].Value = model.Towm;
parameters[7].Value = model.Village;
parameters[8].Value = model.Country;
parameters[9].Value = model.CreationDoctor;
parameters[10].Value = model.ArchivesCreationDate;
parameters[11].Value = model.CommunityService;
parameters[12].Value = model.CreationDate;
parameters[13].Value = model.LastUpdateDate;
{
SqlConnection cn = new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"]);
SqlDataAdapter da = new SqlDataAdapter("sp_Forums_GetTopicsByPage", cn);
da.SelectCommand.CommandType = CommandType.StoredProcedure;
SqlParameter[] parameters = {
new SqlParameter("@ForumID", SqlDbType.Int, 4),
new SqlParameter("@PageNumber", SqlDbType.Int, 4),
new SqlParameter("@PageSize", SqlDbType.Int, 4)
};
parameters[0].Value = forumID;
parameters[1].Value = pageNumber;
parameters[2].Value = pageSize; foreach (SqlParameter parameter in parameters)
{
da.SelectCommand.Parameters.Add(parameter);
}
DataSet ds = new DataSet();
cn.Open();
da.Fill(ds);
cn.Close(); return ds;
}
{
string sql = "s_TestPage_Insert";
SqlCommand sqlcmd = new SqlCommand(sql,DwzxConfiguration.ConnectDB() ,DwzxConfiguration.SqlTran);
sqlcmd.CommandType = CommandType.StoredProcedure;
sqlcmd.Parameters.Add("@Title",SqlDbType.VarChar ,50).Value=test.Title ;
sqlcmd.Parameters.Add("@starttime", SqlDbType.DateTime).Value = test.StartTime ;
sqlcmd.Parameters.Add("@onenum",SqlDbType.Int ,4).Value=test.OneNum ;
sqlcmd.Parameters.Add("@onestore",SqlDbType.Int ,4).Value=test.OneStore ;
sqlcmd.Parameters.Add("@manynum",SqlDbType.Int ,4).Value=test.ManyNum ;
sqlcmd.Parameters.Add("@manystore", SqlDbType.Int, 4).Value = test.ManyStore ;
sqlcmd.Parameters.Add("@finishtime",SqlDbType.Int ,4).Value= test.FinishTime ;
sqlcmd.Parameters.Add("@Questionlistid", SqlDbType.Int, 4).Value = test.Questionlistid;
sqlcmd.Parameters.Add("@RETURN_VALUE", SqlDbType.Int, 4).Direction = ParameterDirection.ReturnValue;
sqlcmd.ExecuteNonQuery();
int Flag = (int) sqlcmd.Parameters["@RETURN_VALUE"].Value;
return Flag;
}
每天累死累活的
还不太习惯
那多Add几个不就是多个参数了
public int Execute(String strSql){
SqlCommand Cmd = new SqlCommand(strSql, _Connection);
try{
return Cmd.ExecuteNonQuery();
}catch(Exception e){
_LastErrorInfo = e.Message;
Error.Log(e.Message + "\n" + e.Source + "\n" + e.StackTrace);
return 0;
}
}