C#调用存储过程并返回结果

问题描述

虚心请教专家个问题:在C#中调用执行存储过程返回存储过程的结果并想与DATAGRID绑定显示,在界面上输入三个文本框内容作为存储过程的输入参数,请问代码该如何实现啊?如何与DATAGRID绑定代码是?SqlConnectionCS=newSqlConnection("Password=123456;UserID=sa;"+"InitialCatalog=xsgl_en;"+"DataSource=(local)");SqlCommandselectCMD=newSqlCommand("test",CS);selectCMD.CommandType=CommandType.StoredProcedure;//第一个参数SqlParametermyParm1=newSqlParameter("@begindate",SqlDbType.datetime,10);myParm1.Direction=System.Data.ParameterDirection.Input;myParm1.Value=this.textbox1.text;//第二个参数SqlParametermyParm2=newSqlParameter("@stopdate",SqlDbType.datetime,10);myParm2.Direction=System.Data.ParameterDirection.Input;myParm2.Value=this.textbox2.text;//第三个参数SqlParametermyParm3=newSqlParameter("@drpcode",SqlDbType.char,10);myParm3.Direction=System.Data.ParameterDirection.Input;myParm3.Value=this.textbox3.text;selectCMD.Parameters.Add(myParm1);selectCMD.Parameters.Add(myParm2);selectCMD.Parameters.Add(myParm3);SqlDataAdaptermyCommand=newSqlDataAdapter();DataSetmyDataSet=newDataSet();myCommand.Fill(myDataSet,"Results");returnmyDataSet;

解决方案

解决方案二:
楼主已经把存储过程的部分给出了下面是绑定的部分DataGrid1.DataSource=myDataSet;DataGrid1.DataBind();
解决方案三:
调用存储过程的方法publicDataSetRunProc_ds(stringprocName,stringdbstring,SqlParameter[]prams){DataSetds=newDataSet();SqlCommandcmd=CreateCommand(procName,prams,0,dbstring);try{SqlDataAdaptermyda=newSqlDataAdapter(cmd);myda.Fill(ds);returnds;}catch{returnnull;}finally{Close();}}

解决方案四:
其实不用适配器的话不用去考虑连接是否打开,也不用时候关闭
解决方案五:
参数procName为存储过程的名字,dbstring为数据库连接字符串,prams为参数数组SqlParameter[]ddlparam=newSqlParameter[3];ddlparam[0]=CreateInParam("@begindate",SqlDbType.datetime,10);ddlparam[1]=CreateInParam("@stopdate",SqlDbType.datetime,10);ddlparam[2]=CreateInParam("@drpcode",SqlDbType.char,10);returnRunProc_ds("Circul_Employee_Result","ConnStr",ddlparam);参数数组CreateParam构造方法privateSqlParameterCreateParam(stringParamName,SqlDbTypeDbType,Int32Size,ParameterDirectionDirection,objectValue){SqlParameterparam;if(Size>0){param=newSqlParameter(ParamName,DbType,Size);}else{param=newSqlParameter(ParamName,DbType);}param.Direction=Direction;if(Value!=null){param.Value=Value;}returnparam;}

解决方案六:
綁定:GridView1.DataSource=ds.DefaultView;GridView1.DataBind();
解决方案七:
SqlParameter[]parameters={newSqlParameter("@PageIndex",SqlDbType.Int),newSqlParameter("@PageSize",SqlDbType.Int),newSqlParameter("@ConditionString",SqlDbType.VarChar,150),newSqlParameter("@Sqlstr",SqlDbType.VarChar,200),newSqlParameter("@RecordCount",SqlDbType.Int),newSqlParameter("@PageCount",SqlDbType.Int),newSqlParameter("@context2",SqlDbType.VarChar,200),};parameters[0].Value=pageIndex;parameters[1].Value=pageSize;parameters[2].Value=Wherestr;parameters[3].Value=Sqlstr;parameters[4].Direction=ParameterDirection.Output;parameters[5].Direction=ParameterDirection.Output;parameters[6].Direction=ParameterDirection.Output;DataSetdds=SqlHelper.SqlHelper.ExecuteDataset(ProcedureName,parameters,"PageTable");
解决方案八:
当数据反回来之后,是存在“DS”中么,如果是的话,那么怎么调用这些数据,如何将他们打印或是输出,按条来,我用的是.net2005的平台,刚刚看看,请指教。
解决方案九:
楼主的问题是下面需要解决的问题的一个子集,请参考我提供的方案,并进行简化。对于包含自增长的多条数据更新到数据库反填回DataTable这个问题可以这样来解决,DataColumndc=dt.Columns["id"];//这一列对应的数据库中的表字段是自增列,在内存DataTable中进行批输入更新时不能马上得到新输入的上一条记录的主键,所以建立临时唯一主键如下:dc.AutoIncrement=true;//设置该列为自增长,dc.AutoIncrementSeed=-1;//新增列的初始值。dc.AutoIncrementStep=-1;//列的值自动递增的数值。默认为1。这样你添加第一条新增数据的时候临时主键为-1,第二条为-2,...在使用DataAdapter.Update(dt);进行更新的时候,如果数据源是SqlServer那使用存储过程输出参数把自增主键输出会自动更新新增的DataRow,比如上面的-1,-2,-3等自动会更新成实际数据库中的自增主键值。这种方式具体可以看我的一片文章,http://blog.csdn.net/zhzuo/archive/2004/08/06/67037.aspx如果是Access或其他数据库就有点麻烦,回填实现如下:注册DataAdapter.RowUpdated事件。da.RowUpdated+=newOleDbRowUpdatedEventHandler(da_RowUpdated);事件处理程序,privatestaticvoidda_RowUpdated(objectsender,OleDbRowUpdatedEventArgse){if(e.Status==UpdateStatus.Continue&&e.StatementType=StatementType.Insert){OleDbConnectionconn=newOleDbConnection("连接字符串");OleDbCommandcomm=newOleDbCommand("SELECT@@IDENTITY",conn);conn.Open();e.Row["id"]=(int)comm.ExecuteScalar();//得到最新递增值更新到内存DataTable中刚更新的DataRow.e.Row.AcceptChanges();conn.Close();}}//处理程序中的每次生成conn,和comm没有必要,你可以只初始化一次,这里这么写只是为了说明过程,而且也没有必要多次打开或关闭连接。
解决方案十:
这里有更多的资料参考,http://blog.csdn.net/zhzuo/archive/2004/08/06/67016.aspxhttp://blog.csdn.net/zhzuo/archive/2004/08/06/67037.aspx

时间: 2024-10-30 17:00:33

C#调用存储过程并返回结果的相关文章

PostgreSQL中调用存储过程并返回数据集实例_PostgreSQL

这里用一个实例来演示PostgreSQL存储过程如何返回数据集. 1.首先准备数据表 复制代码 代码如下: //member_category create table member_category(id serial, name text, discount_rate real, base_integral integer); alter table member_category add primary key(id); alter table member_category add ch

C#调用存储过程(带返回值)和SQL Server DTS的方法

在程序开发中,我们经常要做的事就是访问资料库.有时候会调用存储过程和DTS,下面就此给出例子来说明如何实现 第一部分 调用存储过程(带入参数和取得返回值) 1.调用SQL Server的存储过程 假如我们有如下一个存储过程,很简单的实现,只是将两个传进来值做加法处理然后返回 CREATE PROCEDURE AddMethoD ( @returnvalue int OUTPUT, --返回结果 @Parameter_1 int, --参数一 @Parameter_2 int --参数二 ) AS

php调用存储过程返回结果集

php调用存储过程返回结果集,解决can't return a result set in the given context错误的方法需要php调用存储过程,返回一个结果集,发现很困难,找了半天,终于在老外的论坛上找到解决方案,这里本地化一下. 关键就是两点 1)define('CLIENT_MULTI_RESULTS', 131072); 2)$link = mysql_connect("127.0.0.1", "root", "",1,CL

使用EF调用存储过程查询数据列表并返回输出参数

问题描述 代码如下JRQEntitiesjrq=newJRQEntities();varobj=jrq.Database.SqlQuery<SMSTemplate>("select*fromSMSTemplateSetwhereId=@Id",newSqlParameter{ParameterName="Id",Value=1});if(obj.Count()>0){vara=obj.ToList();}这样传参数会报:如果使用string.For

ASP 调用 ORACLE存储过程并返回结果集

oracle|存储过程 ASP 调用 ORACLE存储过程并返回结果集 看过网上好多ASP调用ORACLE的方法,但是没有特好特直接的东西,所以总结各家的东西最后得出的一个自己需要的方法,感觉也比较大众所以特此发布 ###################################################oracle的存储过程################################################### --创建包头create or replace pack

ASP调用MSSQL存储过程并返回记录集源码详解

存储过程|记录集|详解 以下是asp代码(demo.asp):<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <!--#include file="adovbs.inc"--> <% '通用的ASP读取MSSQL存储过程代码示例 '返回临时表记录集 '带传递参数 dim conn,connstr,cmd,rs connstr = "Provider=SQLOLEDB;serv

返回多个记录集的存储过程-ASP调用存储过程

存储过程|记录集 本文最先介绍的是返回记录集的存储过程.有时候,需要一个存储过程返回多个记录集,在ASP中,如何同时取得这些记录集呢?为了说明这一问题,在userinfo表中增加两个字段:usertel及usermail,并设定只有登录用户可以查看这两项内容. /*SP7*/CREATE PROCEDURE dbo.getUserInfo@userid int,@checklogin bitasset nocount onbeginif @userid is null or @checklogi

带返回记录集的存储过程-ASP调用存储过程

存储过程|记录集 假设有以下存储过程(本文的目的不在于讲述T-SQL语法,所以存储过程只给出代码,不作说明): /*SP1*/CREATE PROCEDURE dbo.getUserListasset nocount onbeginselect * from dbo.[userinfo]endgo 以上存储过程取得userinfo表中的所有记录,返回一个记录集.通过command对象调用该存储过程的ASP代码如下: '**通过Command对象调用存储过程**DIM MyComm,MyRstSe

我用SSH框架调用的oracle存储过程,返回好几百个字段,除了新建一个封装类,有别的好办法吗?

问题描述 我用SSH框架调用的oracle存储过程,返回好几百个字段,除了新建一个封装类,有别的好办法吗? 我用SSH框架调用的oracle存储过程,返回好几百个字段,除了新建一个封装类,有别的好办法吗?毕竟创建一个类很多个变量,前台显示也很麻烦