分享

asp.net数据库连接,三层架构方法调用

 趋明 2012-05-19

http://www.cnblogs.com/dingjie08/archive/2009/03/05/1404103.html

 

asp.net数据库连接,三层架构方法调用

一、web.config配置
<connectionStrings/>
 <!-- 数据库连接关键字 -->
 <appSettings>
  <add key="ConnectionKey" value="Data Source=192.168.100.31;Initial Catalog=stock;User ID=sa;password=123;max pool size=10;min pool size=6"/>
 </appSettings>
 <system.web>

下面的是语言配置
<globalization culture="zh-CN" uiCulture="zh-CN" requestEncoding="gb2312" responseEncoding="gb2312"/>
注意他的位置,不能弄错了。
二、建立数据库的连接

public class GetConn
{
    
public GetConn()
    
{
        
//
        
// TODO: 在此处添加构造函数逻辑
        
//
    }

    
private static SqlConnection conn = null;
    
/// <summary>
    
/// 返回数据库的连接
    
/// </summary>

    public SqlConnection Conn
    
{
        
get
        
{
            
if (conn == null)//如果为空,则创建,否则直接返回对象,单键模式,减少对象的重复创建。
            {
                
string url = ConfigurationSettings.AppSettings["ConnectionKey"];
                conn 
= new SqlConnection(url);
            }

            
return conn;
        }

    }

}

三、数据库方法调用
假设数据库里有一个用户表,下面是关于用户表的方法,查询,删除,修改

public class User
{
    
public User()
    
{
        
//
        
// TODO: 在此处添加构造函数逻辑
        
//
    }

    GetConn conn 
= new GetConn();
    
/// <summary>
    
/// 根据条件获取用户信息
    
/// </summary>
    
/// <param name="UserName"></param>
    
/// <returns></returns>

    public DataTable SelectUsersDynamic(string WhereCondition, string OrderByExpression)
    
{
        DataTable dt 
= new DataTable();
        SqlCommand comm 
= new SqlCommand("SelectUsersDynamic", conn.Conn);
        comm.CommandType 
= CommandType.StoredProcedure;
        comm.Parameters.Add(
"@WhereCondition", SqlDbType.NVarChar, 500);
        comm.Parameters[
"@WhereCondition"].Value = WhereCondition;
        comm.Parameters[
"@WhereCondition"].Direction = System.Data.ParameterDirection.Input;
        comm.Parameters.Add(
"@OrderByExpression", SqlDbType.NVarChar, 250);
        comm.Parameters[
"@OrderByExpression"].Value = OrderByExpression;
        comm.Parameters[
"@OrderByExpression"].Direction = System.Data.ParameterDirection.Input;
        SqlDataAdapter adapter 
= new SqlDataAdapter(comm);
        adapter.Fill(dt);
        
if (conn.Conn.State == ConnectionState.Open)
            conn.Conn.Close();
        
return dt;
    }

    
/// <summary>
    
/// 查询所有用户信息
    
/// </summary>
    
/// <returns></returns>

    public DataTable SelectUsersAll()
    
{
        DataTable dt 
= new DataTable();
        SqlCommand comm 
= new SqlCommand("SelectUsersAll", conn.Conn);
        comm.CommandType 
= CommandType.StoredProcedure;       
        SqlDataAdapter adapter 
= new SqlDataAdapter(comm);
        adapter.Fill(dt);
        
if (conn.Conn.State == ConnectionState.Open)
            conn.Conn.Close();
        
return dt;
    }

    
/// <summary>
    
/// 删除用户
    
/// </summary>
    
/// <param name="UserID"></param>
    
/// <returns></returns>

    public int DeleteUser(int UserID)
    
{
        SqlCommand comm 
= new SqlCommand("DeleteUser", conn.Conn);
        
if (conn.Conn.State == ConnectionState.Closed)
            conn.Conn.Open();
        comm.CommandType 
= CommandType.StoredProcedure;
        comm.Parameters.Add(
"@UserID", SqlDbType.Int, 4);
        comm.Parameters[
"@UserID"].Value = UserID;
        comm.Parameters[
"@UserID"].Direction = System.Data.ParameterDirection.Input;
        
int counts = comm.ExecuteNonQuery();
        
if (conn.Conn.State == ConnectionState.Open)
            conn.Conn.Close();
        
return counts;
    }

    
/// <summary>
    
/// 修改用户信息
    
/// </summary>
    
/// <param name="UserID"></param>  
    
/// <param name="IsSupplier"></param>
    
/// <param name="RoleID"></param>
    
/// <returns></returns>

    public int UpdateUser(int UserID,string UserName,int IsSupplier, int RoleID)
    
{
        SqlCommand comm 
= new SqlCommand("UpdateUser", conn.Conn);
        
if (conn.Conn.State == ConnectionState.Closed)
            conn.Conn.Open();
        comm.CommandType 
= CommandType.StoredProcedure;
        comm.Parameters.Add(
"@UserID", SqlDbType.Int,4);
        comm.Parameters[
"@UserID"].Value = UserID;
        comm.Parameters[
"@UserID"].Direction = System.Data.ParameterDirection.Input;
        comm.Parameters.Add(
"@UserName", SqlDbType.VarChar,20);
        comm.Parameters[
"@UserName"].Value = UserName;
        comm.Parameters[
"@UserName"].Direction = System.Data.ParameterDirection.Input;      
        comm.Parameters.Add(
"@IsSupplier", SqlDbType.Int,4);
        comm.Parameters[
"@IsSupplier"].Value = IsSupplier;
        comm.Parameters[
"@IsSupplier"].Direction = System.Data.ParameterDirection.Input;
        comm.Parameters.Add(
"@RoleID", SqlDbType.Int,4);
        comm.Parameters[
"@RoleID"].Value = RoleID;
        comm.Parameters[
"@RoleID"].Direction = System.Data.ParameterDirection.Input;
        
int counts = comm.ExecuteNonQuery();
        
if (conn.Conn.State == ConnectionState.Open)
            conn.Conn.Close();
        
return counts;
    }

    
/// <summary>
    
/// 设置密码
    
/// </summary>
    
/// <param name="UserName"></param>
    
/// <param name="Password"></param>
    
/// <returns></returns>

    public int UpdateUserPassword(string UserName, string Password)
    
{
        SqlCommand comm 
= new SqlCommand("UpdateUserPassword", conn.Conn);
        
if (conn.Conn.State == ConnectionState.Closed)
            conn.Conn.Open();
        comm.CommandType 
= CommandType.StoredProcedure;
        comm.Parameters.Add(
"@UserName", SqlDbType.VarChar,20);
        comm.Parameters[
"@UserName"].Value = UserName;
        comm.Parameters[
"@UserName"].Direction = System.Data.ParameterDirection.Input;
        comm.Parameters.Add(
"@Password", SqlDbType.VarChar ,32);
        comm.Parameters[
"@Password"].Value = Password;
        comm.Parameters[
"@Password"].Direction = System.Data.ParameterDirection.Input;
        
int counts = comm.ExecuteNonQuery();
        
if (conn.Conn.State == ConnectionState.Open)
            conn.Conn.Close();
        
return counts;
    }

    
/// <summary>
    
/// 新增用户
    
/// </summary>
    
/// <param name="UserName"></param>
    
/// <param name="Password"></param>
    
/// <param name="IsSupplier"></param>
    
/// <param name="RoleID"></param>
    
/// <returns></returns>

    public int InsertUser(string UserName, string Password, int IsSupplier, int RoleID,string SupplierCode)
    
{
        SqlCommand comm 
= new SqlCommand("InsertUser", conn.Conn);
        
if (conn.Conn.State == ConnectionState.Closed)
            conn.Conn.Open();
        comm.CommandType 
= CommandType.StoredProcedure;        
        comm.Parameters.Add(
"@UserName", SqlDbType.NVarChar, 20);
        comm.Parameters[
"@UserName"].Value = UserName;
        comm.Parameters[
"@UserName"].Direction = System.Data.ParameterDirection.Input;
        comm.Parameters.Add(
"@Password", SqlDbType.NVarChar, 32);
        comm.Parameters[
"@Password"].Value = Password;
        comm.Parameters[
"@Password"].Direction = System.Data.ParameterDirection.Input;
        comm.Parameters.Add(
"@IsSupplier", SqlDbType.Int, 4);
        comm.Parameters[
"@IsSupplier"].Value = IsSupplier;
        comm.Parameters[
"@IsSupplier"].Direction = System.Data.ParameterDirection.Input;
        comm.Parameters.Add(
"@RoleID", SqlDbType.Int, 4);
        comm.Parameters[
"@RoleID"].Value = RoleID;
        comm.Parameters[
"@RoleID"].Direction = System.Data.ParameterDirection.Input;
        comm.Parameters.Add(
"@SupplierCode", SqlDbType.VarChar,200);
        comm.Parameters[
"@SupplierCode"].Value = SupplierCode;
        comm.Parameters[
"@SupplierCode"].Direction = System.Data.ParameterDirection.Input;
        
int counts = comm.ExecuteNonQuery();
        
if (conn.Conn.State == ConnectionState.Open)
            conn.Conn.Close();
        
return counts;
    }

}

四、业务层的建立

public class UserBLL
{
    
public UserBLL()
    
{
        
//
        
// TODO: 在此处添加构造函数逻辑
        
//
    }

    User user 
= new User();
       
/// <summary>
    
/// 根据用户名获取用户信息
    
/// </summary>
    
/// <param name="UserName"></param>
    
/// <returns></returns>

    public DataTable SelectUsersDynamic(string WhereCondition, string OrderByExpression)
    
{
        
return user.SelectUsersDynamic(WhereCondition, OrderByExpression);
    }

      
/// <summary>
    
/// 查询所有用户信息
    
/// </summary>
    
/// <returns></returns>

    public DataTable SelectUsersAll()
    
{
        
return user.SelectUsersAll();
    }

     
/// <summary>
    
/// 删除用户
    
/// </summary>
    
/// <param name="UserID"></param>
    
/// <returns></returns>

    public int DeleteUser(int UserID)
    
{
        
return user.DeleteUser(UserID);
    }

     
/// <summary>
    
/// 修改用户信息
    
/// </summary>
    
/// <param name="UserID"></param>   
    
/// <param name="IsSupplier"></param>
    
/// <param name="RoleID"></param>
    
/// <returns></returns>

    public int UpdateUser(int UserID, string UserName, int IsSupplier, int RoleID)
    
{
        
return user.UpdateUser(UserID,UserName,IsSupplier, RoleID);
    }

    
/// <summary>
    
/// 设置密码
    
/// </summary>
    
/// <param name="UserName"></param>
    
/// <param name="Password"></param>
    
/// <returns></returns>

    public int UpdateUserPassword(string UserName, string Password)
    
{
        
return user.UpdateUserPassword(UserName , new StockBaseBLL().MD5( Password,16));
    }

    
/// <summary>
    
/// 新增用户
    
/// </summary>
    
/// <param name="UserName"></param>
    
/// <param name="Password"></param>
    
/// <param name="IsSupplier"></param>
    
/// <param name="RoleID"></param>
    
/// <returns></returns>

    public int InsertUser(string UserName, string Password, int IsSupplier, int RoleID, string SupplierCode)
    
{
        
return user.InsertUser(UserName, Password, IsSupplier, RoleID,SupplierCode);
    }

}

 

上面的调用感觉像是多余的,其实不是的,他可以隔离表示层和数据库层的方法。还有如果对数据集要处理的话,也可以在这里处理好,然后返回给表示层。
五、表示层调用
这一层的调用我想就不写了,因为很简单,就是创建对象,然后调用。

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约