C#.net存储过程访问数据库(带参数)

来源:互联网 发布:java课题 编辑:程序博客网 时间:2024/05/21 16:22

在sql server2000/2005中创建LSystem数据库,包含t_users表(user_no,user_name,user_pwd),这都是上次的图书管理系统的数据库。。。仅当做实验而已

截图01

创建存储过程lend_limit(写得比较简单,只是演示, 呵呵)

//参数mount可以去掉

create procedure lend_limit @id char(20)
as declare
    @mount int;
begin
    select *from t_users where user_id=@id
END

//DataBase类,用于数据库连接

如下:

using System;
using System.Data.SqlClient;
using System.Data;

namespace 使用存储过程访问数据库
{
    ///


    /// Description of DataBase.
    ///

    public class DataBase
    {
        private SqlConnection connect;
        //private SqlDataReader sdr;
        public DataBase()
        {
            string conString=@"Server=.;database=LSystem;user id=sa;password=110;";
            this.connect=new SqlConnection(conString);
            this.connect.Open();   
        }
        //存储过程返回reader

       //传入procStr存储过程名和sp(参数,即存储过程定义的参数),当然,该函数只适合一个参数的存储过程,可以重载该函数
        public SqlDataReader getPReader(string procStr,SqlParameter sp)
        {
            SqlCommand sc=new SqlCommand(procStr,this.connect);
            sc.CommandType=CommandType.StoredProcedure;           
            sc.Parameters.Add(sp);
            SqlDataReader sqlDR=sc.ExecuteReader();
            return sqlDR;
        }   
        public void closeConnection()
        {
            connect.Close();
        }
    }
}

主类:

using System;
using System.IO;
using System.Data;
using System.Data.SqlClient;
namespace 使用存储过程访问数据库
{
    class Program
    {       
        public static void Main(string[] args)
        {
            DataBase db=new DataBase();
            SqlDataReader reader;

            //参数的构造,@id为存储过程的参数名,SqlDbType.NChar为类型,与存储过程中定义的一致,20为大小
            SqlParameter sqlPara=new SqlParameter("@id",SqlDbType.NChar,20);

           // 参数赋值,在应用程序中传入
            sqlPara.Value="1001";

//调用DataBase中的函数,返回reader
            reader=db.getPReader("lend_limit",sqlPara);      

//这样就可以对返回结果操作了             
            while(reader.Read())
            {
                Console.WriteLine("hello");
                Console.WriteLine("{0}/t{1}/t{2}",reader[0].ToString().PadRight(30),reader[1].ToString().PadRight(20),reader[2].ToString());
            }

//关闭
            db.closeConnection();           
            Console.Write("Press any key to continue . . . ");
            Console.ReadKey(true);
        }
    }
}

结果为

截图02

原创粉丝点击