欢迎来到天天文库
浏览记录
ID:34726245
大小:52.13 KB
页数:8页
时间:2019-03-10
《sql调用存储过程c#》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、有多种方法使用ADO.NET调用存储过程并获得返回值和返回参数,其中包括:使用DataSet对象,在获得返回值和返回参数之外,还可以收集并使用返回的数据行。使用DataReader对象收集返回的行,遍历这些行,然后收集返回值和返回参数。使用ExecuteScalar方法返回结果中第一行的第一列的值以及返回值和返回参数。这对于聚合函数特别有用。使用ExecuteNonQuery方法只返回参数和值。任何返回的行都将被丢弃。这对于执行操作查询特别有用。本文演示后三种方法,并使用SqlCommand和OleDb
2、Command这两个对象。确保只复制对应于您在使用的托管提供程序的代码。如果您不确定应该使用哪个托管提供程序,请访问下面的MicrosoftDeveloperNetwork网站:.NET数据提供程序http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconadonetproviders.asp(http://msdn.microsoft.com/library/default.asp?url=/l
3、ibrary/en-us/cpguide/html/cpconadonetproviders.asp)在本文的每个示例中,这些参数都被添加到Command对象的Parameters集合中。使用SqlCommand对象时,您不必按照任何特定的顺序添加参数,但必须保证参数名正确。使用OleDbCommand对象时,必须按照正确的顺序添加参数,不能按照名称使用参数。回到顶端使用DataReader返回行和参数您可以使用DataReader对象返回只读的仅向前型数据流。DataReader中所包含的信息可以来自
4、一个存储过程。本示例使用DataReader对象运行带有输入和输出参数的存储过程,然后遍历返回记录,以查看返回参数。在运行MicrosoftSQLServer的服务器上创建下面的存储过程:CreateProcedureTestProcedure(@au_idINvarchar(11),@numTitlesOUTIntegerOUTPUT)ASselectA.au_fname,A.au_lname,T.titlefromauthorsasAjointitleauthorasTAonA.au_id=TA.a
5、u_idjointitlesasTonT.title_id=TA.title_idwhereA.au_id=@au_idINset@numTitlesOUT=@@Rowcountreturn(5)新建一个新的VisualC#.NETWindows应用程序项目。对System和System.Data命名空间使用using语句,这样,在后面的代码中就无需限定这些命名空间中的声明了。将此代码添加到“窗体”代码模块的顶部。请确保只复制对应于您所选的提供程序的代码。SQL客户端usingSystem.Data.S
6、qlClient;OLEDB数据提供程序usingSystem.Data.OleDb;用以下代码替换privateForm_Load事件中的代码:SQL客户端SqlConnectionPubsConn=newSqlConnection("DataSource=server;integrated"+"Security=sspi;initialcatalog=pubs;");SqlCommandtestCMD=newSqlCommand("TestProcedure",PubsConn);testCMD.C
7、ommandType=CommandType.StoredProcedure;SqlParameterRetVal=testCMD.Parameters.Add("RetVal",SqlDbType.Int);RetVal.Direction=ParameterDirection.ReturnValue;SqlParameterIdIn=testCMD.Parameters.Add("@au_idIN",SqlDbType.VarChar,11);IdIn.Direction=ParameterDire
8、ction.Input;SqlParameterNumTitles=testCMD.Parameters.Add("@numtitlesout",SqlDbType.VarChar,11);NumTitles.Direction=ParameterDirection.Output;IdIn.Value="213-46-8915";PubsConn.Open();SqlDataReadermyReader=testCMD.ExecuteRea
此文档下载收益归作者所有