C#执行存储过程

Posted 真心面对

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#执行存储过程相关的知识,希望对你有一定的参考价值。

返回单个值   

   /// </summary>
        /// <param name="user">用户信息</param>
         /// <returns></returns>
         public static int VerifyUser(clsUser user)
          {
             int iRet;
             string sql = String.Format("EXECUTE VerifyUser @myVerifyReader OUTPUT,‘{0}‘,‘{1}‘",user.username,user.password); //执行的T-SQL串
              SqlCommand scmd = new SqlCommand(sql, conn); 

            scmd.CommandType = CommandType.StoredProcedure;
            scmd.Parameters.Add(new SqlParameter("@myVerifyReader",SqlDbType.Int)); 
            scmd.Parameters["@myVerifyReader"].Direction = ParameterDirection.Output; 

            //  DBOpen(conn); //在返回值上有问题  
            scmd.ExecuteNonQuery();
iRet = (int)scmd.Parameters["@myVerifyReader"].Value; DBClose(conn);

return iRet;
}

 

sql

/*
* VerifyUser 存储过程
* 用途:验证用户登陆
*/
CREATE PROCEDURE VerifyUser
(
    @myVerifyReader int OUTPUT, --返回结果
    @username varchar(50), --用户名
    @userpassword varchar(50) --用户密码
)
AS
IF EXISTS(SELECT [id] FROM [Users] WHERE username = @username AND userpassword = @userpassword)
    SET @myVerifyReader = 0 --通过验证

ELSE IF EXISTS(SELECT [id] FROM [Users] WHERE username = @username)
    SET @myVerifyReader = 1 --用户存在,密码不正确
ELSE
    SET @myVerifyReader = 2 --用户不存在

RETURN  isnull(@myVerifyReader,3)
-------------------------------------------------
GO

 

返回一个表

//连接数据库
        SqlConnection conn = new SqlConnection();
        conn.ConnectionString = "Data Source=KARL;Initial Catalog=ER;Persist Security Info=True;User ID=sa;Password=sa";
        SqlCommand command = new SqlCommand("proc_getMovieID", conn);
        conn.Open();
        command.CommandType = CommandType.StoredProcedure;
        command.Parameters.Add("@movieName", SqlDbType.NVarChar, 50);
        command.Parameters["@movieName"].Value = movieName;
        SqlDataAdapter da = new SqlDataAdapter();
        da.SelectCommand = command;
        DataSet ds = new DataSet();
        da.Fill(ds, "tables");

        //计算movieID
        Int32 movieID;
        if (ds.Tables[0].Rows.Count == 0)
            movieID = -1;
        else
            movieID = int.Parse(ds.Tables[0].Rows[0][0].ToString());
        //关闭数据库
        conn.Close();
        return movieID;

 

以上是关于C#执行存储过程的主要内容,如果未能解决你的问题,请参考以下文章

C#执行oracle返回游标类型的存储过程

转解决存储过程执行快,但C#程序调用执行慢的问题

C#执行存储过程

Asp.net(C#) 获取 执行sql server 语句/存储过程后的 多个返回值?

用C#写一个windows服务可定时执行sql Service数据库里面的存储过程(带两个参数),急求代码!高手赐教!

如何在 C# 程序中执行存储过程