大恶人吉日嘎拉之走火入魔闭门造车之.NET 多种数据库兼容的实现方法,仅写一套程序在多种数据库上执行例子程序...

本文介绍了一种多数据库兼容的访问方法,通过配置文件选择不同的数据库类型,并提供了多种数据库操作示例,包括实体获取、更新、删除等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有良好的数据库访问底层,才能有好良好的信息管理系统,才能更容易维护改进,才容易规范化整个系统的开发。

 

Web.config 配置文件

    <add key="DataBaseType" value="Sqlserver"/>
    
<add key="DbHelperClass" value="DotNet.DbUtilities.SqlHelper"/>
    
<add key="DbHelperAssmely" value="DotNet.DbUtilities"/>
    
<add key="UserCenterConnection" value="Server=JIRIGALA-PC;Database=UserCenterV30;Uid=sa;Pwd=sa;"/>

 

程序源码参考

//------------------------------------------------------------
// All Rights Reserved , Copyright (C) 2010 , Jirisoft , Ltd. 
//------------------------------------------------------------

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.Common;

namespace DotNet.Web
{
    
using DotNet.Business;
    
using DotNet.DbUtilities;
    
using DotNet.Model;

    
/// <remarks>
    
/// Example
    
/// 多种数据库兼容的实现方法,只写一套程序在多种数据库上执行例子程序
    
/// 
    
/// 修改纪录
    
/// 
    
///    版本:1.0 2010.06.14    JiRiGaLa    写好例子程序方便别人学习。
    
///    
    
/// 版本:1.0
    
/// <author>
    
///        <name>JiRiGaLa</name>
    
///        <date>2010.06.14</date>
    
/// </author> 
    
/// </remarks>
    public partial class Example : System.Web.UI.Page
    {
        
protected void Page_Load(object sender, EventArgs e)
        {
            
// 各种数据库的访问方式及多数据库兼容的例子
            this.DbHelper();
            
// 获取实体
            this.GetEntity();
            
// 更新实体(多次数据库打开关闭)
            this.UpdateEntity1();
            
// 更新实体(一次数据库打开关闭)
            this.UpdateEntity2();
            
// 删除实体
            this.DeleteEntity();
            
// 访问数据库(通过管理器访问数据库)
            this.DbConnectionByManager();
            
// 访问数据库(通过数据库访问组件)
            this.DbConnectionByDbHelper();            
        }

        
/// <summary>
        
/// 各种数据库的访问方式及多数据库兼容的例子
        
/// </summary>
        private void DbHelper()
        {
            
// 读取数据库连接
            string dbConnection = ConfigurationManager.AppSettings["DBConnection"];
            
// SqlServer 数据库
            IDbHelper sqlHelper = new SqlHelper(dbConnection);
            sqlHelper.Open();
            sqlHelper.Fill(
" SELECT * FROM BASE_USER ");
            sqlHelper.Close();

            
// Oracle 数据库
            IDbHelper oracleHelper = new OracleHelper(dbConnection);
            oracleHelper.Open();
            oracleHelper.Fill(
" SELECT * FROM BASE_USER ");
            oracleHelper.Close();

            
// MySql 数据库
            IDbHelper mySqlHelper = new MySqlHelper(dbConnection);
            mySqlHelper.Open();
            mySqlHelper.Fill(
" SELECT * FROM BASE_USER ");
            mySqlHelper.Close();

            
// MySql 数据库
            IDbHelper oleDbHelper = new OleDbHelper(dbConnection);
            oleDbHelper.Open();
            oleDbHelper.Fill(
" SELECT * FROM BASE_USER ");
            oleDbHelper.Close();

            
// 按配置获取数据库设置,多种数据库按配置自动获取
            IDbHelper dbHelper = DbHelperFactory.GetHelper();
            dbHelper.Open();
            dbHelper.Fill(
" SELECT * FROM BASE_USER ");
            dbHelper.Close();

            
// 不用Open、Close的方式执行数据库查询,每次会自动打开关闭数据库
            DbUtilities.DbHelper.Fill(" SELECT * FROM BASE_USER ");
        }

        
/// <summary>
        
/// 获取实体
        
/// </summary>
        
/// <returns>实体</returns>
        private BaseUserEntity GetEntity()
        {
            
// 这个是管理器
            BaseUserManager userManager = new BaseUserManager();
            
// 这里是获取一个实体、会自动打开一次数据库
            BaseUserEntity userEntity = userManager.GetEntity("jirigala");
            
// 这里是读取实体的属性
            
// this.Title = userEntity.Username;
            return userEntity;
        }

        
/// <summary>
        
/// 更新实体(多次数据库打开关闭)
        
/// </summary>
        
/// <returns>影响行数</returns>
        private int UpdateEntity1()
        {
            
// 先读取数据
            BaseUserManager userManager = new BaseUserManager();
            
// 这里会自动打开一次数据库
            BaseUserEntity userEntity = userManager.GetEntity("jirigala");
            
// 这里进行对实体的更新
            userEntity.Username = "吉日嘎拉";
            
// 这里是更新实体,会又会打开关闭一次数据库
            return userManager.Update(userEntity);
        }

        
/// <summary>
        
/// 更新实体(一次数据库打开关闭)
        
/// </summary>
        
/// <returns>影响行数</returns>
        private int UpdateEntity2()
        {
            
int returnValue = 0;
            
// 按配置获取数据库设置
            IDbHelper dbHelper = DbHelperFactory.GetHelper();
            
// 打开数据库
            dbHelper.Open();
            
// 先读取数据,按已经打开的数据库连接
            BaseUserManager userManager = new BaseUserManager(dbHelper);
            
// 这里会自动打开一次数据库
            BaseUserEntity userEntity = userManager.GetEntity("jirigala");
            
// 这里进行对实体的更新
            userEntity.Username = "吉日嘎拉";
            
// 这里是更新实体,会又会打开关闭一次数据库
            returnValue = userManager.Update(userEntity);
            
// 关闭数据库
            dbHelper.Close();
            
return returnValue;
        }        

        
/// <summary>
        
/// 删除实体
        
/// </summary>
        
/// <returns>影响行数</returns>
        private int DeleteEntity()
        {
            
// 这个是管理器
            BaseUserManager userManager = new BaseUserManager();
            
// 这里是删除一个实体、也会自动打开关闭数据库一次
            return userManager.Delete("jirigala");
        }

        
/// <summary>
        
/// 访问数据库(通过管理器访问数据库)
        
/// </summary>
        private void DbConnectionByManager()
        {
            BaseUserManager userManager 
= new BaseUserManager();
            
// userManager.GetDT();
            
// 类里的数据库使用方法
            DataTable dataTable = userManager.DbHelper.Fill(" SELECT * FROM BASE_USER ");
            userManager.DbHelper.ExecuteNonQuery(
" SELECT * FROM BASE_USER ");
            userManager.DbHelper.ExecuteScalar(
" SELECT * FROM BASE_USER ");            
            
            IDataReader dataReader 
= userManager.DbHelper.ExecuteReader(" SELECT * FROM BASE_BUSINESSCARD ");
            List
<BaseBusinessCardEntity> listBaseBusinessCard = new List<BaseBusinessCardEntity>();
            
while (dataReader.Read())
            {
                listBaseBusinessCard.Add(
new BaseBusinessCardEntity().GetFrom(dataReader));
            }   
        }

        
/// <summary>
        
/// 访问数据库(通过数据库访问组件)
        
/// </summary>
        private void DbConnectionByDbHelper()
        {
            
// 数据库使用方法
            DataTable dataTable = DbUtilities.DbHelper.Fill(" SELECT * FROM BASE_USER ");
            DbUtilities.DbHelper.ExecuteNonQuery(
" SELECT * FROM BASE_USER ");
            DbUtilities.DbHelper.ExecuteScalar(
" SELECT * FROM BASE_USER ");
            
// 用参数的访问方式
            string sqlQuery = " SELECT COUNT(*) FROM BASE_USER WHERE ID=" + DbUtilities.DbHelper.GetParameter("ID");
            DbParameter[] dbParameters 
= DbUtilities.DbHelper.MakeParameters("ID""jirigala");
            DbUtilities.DbHelper.ExecuteScalar(sqlQuery, dbParameters);

            IDataReader dataReader 
= DbUtilities.DbHelper.ExecuteReader(" SELECT * FROM BASE_BUSINESSCARD ");
            List
<BaseBusinessCardEntity> listBaseBusinessCard = new List<BaseBusinessCardEntity>();
            
while (dataReader.Read())
            {
                listBaseBusinessCard.Add(
new BaseBusinessCardEntity().GetFrom(dataReader));
            }            
        }
    }
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值