存储过程在C#中的使用

存储过程在C#中的使用(1
前面有篇文章已经介绍了如何在sqlserver2000中创建存储过程,
那么在这里我们就来具体
看看在C#中如何使用. 
先看看创建输入参数的存储过程如何在C#中使用. 
创建一个简单的插入存储过程,代码如下: 
create procedure TestProcedure 
@id 
int
@uname varchar(
20),@upass varchar(20
as 
insert into [user] values(@id,@uname,@upass) 
GO 
然后在C#中使用,来看看,界面上有三个文本框以供用户输入数据
,textBox1,textBox2,textBox3 
using (SqlConnection conn = new SqlConnection(connstring)) 

  conn.Open(); 
  SqlCommand command 
= new SqlCommand(); 
  command.CommandText 
= "TestProcedure";//指定存储过程名 
  command.Connection = conn; 
  command.CommandType
=CommandType.StoredProcedure;
/
/
指定类型为存储过程 
  SqlParameter sp = new SqlParameter(); 

  sp.ParameterName 
= "@id"
  sp.SqlDbType 
= SqlDbType.Int; 
  sp.Value 
= int.Parse(this.textBox1.Text); 
  command.Parameters.Add(sp); 

  sp 
= new SqlParameter(); 
  sp.ParameterName 
= "@uname"
  sp.SqlDbType 
= SqlDbType.VarChar; 
  sp.Value 
= this.textBox2.Text; 
  command.Parameters.Add(sp); 

  sp 
= new SqlParameter(); 
  sp.ParameterName 
= "@upass"
  sp.SqlDbType 
= SqlDbType.VarChar; 
  sp.Value 
= this.textBox3.Text; 
  command.Parameters.Add(sp); 
  command.ExecuteNonQuery(); 

  conn.Close(); 
}
 


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

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

        public static SqlCommand BuildQueryCommand(SqlConnection connection, 
string storedProcName, IDataParameter[] parameters)
        
{
            SqlCommand command 
= new SqlCommand(storedProcName, connection);
            command.CommandType 
= CommandType.StoredProcedure;
            
foreach (SqlParameter parameter in parameters)
            
{
                command.Parameters.Add(parameter);
            }

            
return command;
        }


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

        }




//IDataParameter[]使用 
从表面上看,IDataParameter[]的实例就是一个IDataParameter的数组。
而IDataParameter实际上是不能直接实例化的,所以这种数组其实很不常见,
仅仅会出现在函数的入口参数里面。且多以params的形式出现。这样做的好处
是令这个函数可以对付所有的数据库。
 
        IDataParameter[]简单的说来,就是可以包含任何数据库参数的数组,
这些参数可以是SqlParameter或者OleDbParameter,但是,IDataParameter[]
不可以直接从SqlParameter[]转换过来。


        下面是三种创建IDataParameter[]的方法:
一、直接构造:
IDataParameter[] parameters 
= new IDataParameter[]{ sqlparameter1, sqlparameter2, new SqlParameter() }
二、通过ArrayList转换。
ArrayList paramlist 
= new ArrayList()
paramlist.Add( sqlparameter1 );
.
.
IDataParameter param 
= (IDataParameter[]) paramlist.ToArray
typeof( IDataParameter ) );
三、通过其他Parameter类型的数组创建。
SqlParameter[] _param 
= new SqlParameter[]. }

IDataParameter[] param 
= new IDataParameter[ _param.Length ];
_param.CopyTo( param, 
0 );



posted @ 2008-07-12 17:23  网络金领  阅读(935)  评论(0编辑  收藏  举报