預存程序在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 );