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

在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 使用存储过程访问数据库
{
    /// <summary>
    /// Description of DataBase.
    /// </summary>
    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
 
 
 

你可能感兴趣的:(数据库,style,职场,休闲,blank)