c#如何调用 storedprocedure mysqlparameter

如题所述

第1个回答  2014-02-07
* precedure 中用@@rowcount 用来显示上条命令影响的行数

1. procedure 有输入参数,无返回值
procedure :
USE [biyi]
GO
create proc TEST2 (@v1 nvarchar(50),@v2 nvarchar(50))
as
SELECT * FROM PROCE
WHERE @v1>0 AND @v2>0
GO

C#中调用

String ConnStr = ConfigurationManager.ConnectionStrings["Connection"].ConnectionString;
using (SqlConnection conn = new SqlConnection(ConnStr))
{
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = "TEST2";//Procedure Name is TEST2
cmd.CommandType = CommandType.StoredProcedure;
IDataParameter[] parameters = {
new SqlParameter("@v1", c) , //Procedure 的第一个输入参数
new SqlParameter("@v2", SqlDbType.NVarChar,50), //Procedure 的第二个输入参数
};
parameters[0].Value = "1";
parameters[1].Value = "2";
cmd.Parameters.Add(parameters[0]); //或者 直接 cmd.Parameters.Add( "@v1",SqlDbType.NVarChar,50);
cmd.Parameters.Add(parameters[1]);
conn.Open();
SqlDataAdapter ad = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
ad.Fill(ds);
this.GridView1.DataSource = ds.Tables[0];
this.GridView1.DataBind();

}

2. procedure 有输入参数,也有返回值
Procedure:
USE [biyi]
GO
create proc TEST3 (@v1 nvarchar(50),@v2 nvarchar(50))
as
if @v1 > @v2
return 1
else return 2
GO

C#中调用:
using (SqlConnection conn = new SqlConnection(ConnStr))
{
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = "TEST3";//Procedure Name
cmd.CommandType = CommandType.StoredProcedure;
IDataParameter[] parameters = {
new SqlParameter("@v1", SqlDbType.NVarChar,50) , //Procedure 的第一个输入参数
new SqlParameter("@v2", SqlDbType.NVarChar,50), //Procedure 的第二个输入参数
new SqlParameter("return", SqlDbType.NVarChar,50), //返回值
};
parameters[0].Value = "1";
parameters[1].Value = "2";
parameters[2].Direction = ParameterDirection.ReturnValue;
cmd.Parameters.Add(parameters[0]);
cmd.Parameters.Add(parameters[1]);
cmd.Parameters.Add(parameters[2]);
conn.Open();
cmd.ExecuteNonQuery();
Label1.Text = parameters[2].Value.ToString();
}本回答被提问者和网友采纳
相似回答