免费邮箱 |加入收藏 | 会员中心 | 我要投稿 | RSS
您当前的位置:首页 > .NET专区 > ASP.NET应用

ado.net快速上手实践篇(一)

时间:2011-05-21 10:43:51  来源:站内  作者:潘春会

前言:这两天重温经典,对ado.net的东西稍微深入的了解了一下,顺便写点代码练练手,全当是复习笔记吧。
一、简单说说ado.net的5大常用对象

既然说ado.net,当然不能免俗地要提到5大常用对象。本文不会对ado.net的5大对象和它们的关系进行过多阐释,不过我们应该对下面这张图的结构有个了解:


关于上图图示中的5大对象,经常做以数据为驱动的mis系统的童鞋应该不会陌生。本文一笔带过。下面我们一步一步实现以ado.net为核心的数据访问程序。

【注意:下面的示例代码和demo是楼猪本周六和周日两天时间实现的,未经详细测试,可能有重大bug,下载学习使用的童鞋务必注意】

二、数据访问持久化层
1、IDbOperation接口


代码
using System.Collections.Generic;
using System.Data;
using System.Data.Common;

namespace AdoNetDataaccess.Core.Contract
{
    public interface IDbOperation
    {
        DbCommand CreateDbCommd(DbConnection sqlConn, DbTransaction transaction, string sqlStr, CommandType cmdType, List<DbParameter> listParams);

        DbParameter CreateDbPRameter(string paramName, object paramValue);

        DbDataReader ExecuteReader(string sqlStr, CommandType cmdType, List<DbParameter> listParams);

        DataTable FillDataTable(string sqlStr, CommandType cmdType, List<DbParameter> listParams);

        DataSet FillDataSet(string sqlStr, CommandType cmdType, List<DbParameter> listParams);

        object ExecuteScalar(string sqlStr, CommandType cmdType, List<DbParameter> listParams);

        int ExecuteNonQuery(string sqlStr, CommandType cmdType, List<DbParameter> listParams);

        /// <summary>
        /// 批量插入
        /// </summary>
        /// <param name="tableName">表名称</param>
        /// <param name="dt">组装好的要批量导入的datatable</param>
        /// <returns></returns>
        bool ExecuteBatchInsert(string tableName, int batchSize, int copyTimeout, DataTable dt);

        void OpenConnection();

        void CloseConnection();
    }
}


上面的接口包括增删改查,批量插入以及数据库连接对象的连接和关闭等常用操作,您可以根据命名和参数轻松理解函数的含义。根据楼猪的开发经验,对于平时的数据库操作,上述方法差不多够用了。当然您也可以按照自己需要,重写组织添加其他函数。
2、针对一种数据源的数据操作实现
底层的数据操作接口定义好后,就要针对一种数据源,具体实现上述的数据操作。这里楼猪选择了Sql Server。我们也可以实现其他数据源的数据访问操作,按照配置,利用抽象工厂动态反射选择是哪一种数据源的实现。这里按下不表,有心的童鞋自己可以动手一试。下面是具体的实现:


代码
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Common;
using System.Data.SqlClient;
using System.Transactions;

namespace AdoNetDataAccess.Core.Implement
{
    using AdoNetDataAccess.Core.Contract;

    public class SqlServer : IDbOperation, IDisposable
    {
        private int cmdTimeOut = 60;
        private DbConnection sqlConn = null;
        private DbCommand cmd = null;

        private SqlServer()
        {

        }

        public SqlServer(string sqlConStr)
        {
            sqlConn = new SqlConnection(sqlConStr);
            cmdTimeOut = sqlConn.ConnectionTimeout;
        }

        public SqlServer(string sqlConStr, int timeOut)
        {
            sqlConn = new SqlConnection(sqlConStr);
            if (timeOut < 0)
            {

来顶一下
返回首页
返回首页
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
推荐资讯
如何找出DHCP地址池里未使用的IP地址
如何找出DHCP地址池里
国内常用的DNS列表
国内常用的DNS列表
Linux邮件服务器软件比较
Linux邮件服务器软件比
学用纯CSS打造可折叠树状菜单
学用纯CSS打造可折叠树
相关文章
栏目更新
栏目热门