存储过程在C#中的使用(二)转

存储过程在C#中的使用( 1 )
None.gif前面有篇文章已经介绍了如何在sqlserver2000中创建存储过程,
那么在这里我们就来具体
看看在C#中如何使用.
None.gif先看看创建输入参数的存储过程如何在C#中使用.
None.gif创建一个简单的插入存储过程,代码如下:
None.gifcreate procedure TestProcedure
None.gif@id
int ,
None.gif@uname varchar(
20 ),@upass varchar( 20 )
None.gif
as
None.gifinsert into [user] values(@id,@uname,@upass)
None.gifGO
None.gif然后在C#中使用,来看看,界面上有三个文本框以供用户输入数据
,textBox1,textBox2,textBox3
None.gif
using (SqlConnection conn = new SqlConnection(connstring))
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
InBlock.gif   conn.Open();
InBlock.gif   SqlCommand command
= new SqlCommand();
InBlock.gif   command.CommandText
= "TestProcedure";//指定存储过程名
InBlock.gif
   command.Connection = conn;
InBlock.gif   command.CommandType
=CommandType.StoredProcedure;
/
/
指定类型为存储过程
InBlock.gif
   SqlParameter sp = new SqlParameter();
InBlock.gif
InBlock.gif   sp.ParameterName
= "@id";
InBlock.gif   sp.SqlDbType
= SqlDbType.Int;
InBlock.gif   sp.Value
= int.Parse(this.textBox1.Text);
InBlock.gif   command.Parameters.Add(sp);
InBlock.gif
InBlock.gif   sp
= new SqlParameter();
InBlock.gif   sp.ParameterName
= "@uname";
InBlock.gif   sp.SqlDbType
= SqlDbType.VarChar;
InBlock.gif   sp.Value
= this.textBox2.Text;
InBlock.gif   command.Parameters.Add(sp);
InBlock.gif
InBlock.gif   sp
= new SqlParameter();
InBlock.gif   sp.ParameterName
= "@upass";
InBlock.gif   sp.SqlDbType
= SqlDbType.VarChar;
InBlock.gif   sp.Value
= this.textBox3.Text;
InBlock.gif   command.Parameters.Add(sp);
InBlock.gif   command.ExecuteNonQuery();
InBlock.gif
InBlock.gif   conn.Close();
ExpandedBlockEnd.gif}

None.gif
None.gif
None.gif
None.gif
http://www.cnblogs.com/qinfei/archive/2005/11/03/268240.html

存储过程在C#中的使用(2)
None.gif // 构建 SqlCommand 对象(用来返回一个结果集,而不是一个整数值),
参数为数据库连接、存储过程名、存储过程参数。

None.gif
         public static SqlCommand BuildQueryCommand(SqlConnection connection,
string storedProcName, IDataParameter[] parameters)
ExpandedBlockStart.gifContractedBlock.gif        
dot.gif {
InBlock.gif             SqlCommand command
= new SqlCommand(storedProcName, connection);
InBlock.gif             command.CommandType
= CommandType.StoredProcedure;
InBlock.gif            
foreach (SqlParameter parameter in parameters)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
InBlock.gif                 command.Parameters.Add(parameter);
ExpandedSubBlockEnd.gif             }

InBlock.gif            
return command;
ExpandedBlockEnd.gif         }

None.gif
None.gif        
// 执行存储过程,返回结果集
None.gif
         public static DataSet RunProcedure( string storedProcName,
IDataParameter[]
parameters,
string tableName)
ExpandedBlockStart.gifContractedBlock.gif        
dot.gif {
InBlock.gif             SqlConnection connection
= new SqlConnection
(connectionString);
InBlock.gif             DataSet dataSet
= new DataSet();
InBlock.gif             connection.Open();
InBlock.gif             SqlDataAdapter sqlDA
= new SqlDataAdapter();
InBlock.gif             sqlDA.SelectCommand
= BuildQueryCommand(connection,
storedProcName,
parameters);
InBlock.gif             sqlDA.Fill(dataSet, tableName);
InBlock.gif             connection.Close();
InBlock.gif            
return dataSet;
InBlock.gif
ExpandedBlockEnd.gif         }

None.gif
None.gif
None.gif
None.gif
// IDataParameter[]使用
None.gif
从表面上看,IDataParameter[]的实例就是一个IDataParameter的数组。
而IDataParameter实际上是不能直接实例化的,所以这种数组其实很不常见,
仅仅会出现在函数的入口参数里面。且多以params的形式出现。这样做的好处
是令这个函数可以对付所有的数据库。
None.gif
None.gif         IDataParameter[]简单的说来,就是可以包含任何数据库参数的数组,
这些参数可以是SqlParameter或者OleDbParameter,但是,IDataParameter[]
不可以直接从SqlParameter[]转换过来。
None.gif
None.gif
None.gif         下面是三种创建IDataParameter[]的方法:
None.gif一、直接构造:
ExpandedBlockStart.gifContractedBlock.gifIDataParameter[] parameters
= new IDataParameter[] dot.gif
{ sqlparameter1, sqlparameter2, new SqlParameter(dot.gif) }
None.gif二、通过ArrayList转换。
None.gifArrayList paramlist
= new ArrayList()
None.gifparamlist.Add( sqlparameter1 );
None.gifdot.gif.
None.gifdot.gif.
None.gifIDataParameter param
= (IDataParameter[]) paramlist.ToArray
(
typeof ( IDataParameter ) );
None.gif三、通过其他Parameter类型的数组创建。
ExpandedBlockStart.gifContractedBlock.gifSqlParameter[] _param
= new SqlParameter[] dot.gif { dot.gif. }
None.gif
None.gifIDataParameter[] param
= new IDataParameter[ _param.Length ];
None.gif_param.CopyTo( param,
0 );
None.gif

转载于:https://www.cnblogs.com/n666/archive/2009/10/21/2191064.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值
>