最近写一个项目,我开发的方式首先设计数据库,然后用网上免费的代码生成软件CodePlus V2.0生成mode对象,同时封装操作方法,在与数据库操作方面我封装了一个数据操作类,很方便,贡献出来。

Code
    public static class SqlPlus
    {

        // Hashtable to store cached parameters
        private static Hashtable parmCache = Hashtable.Synchronized(new Hashtable());

        public static string connectionString = "Data Source=spsserver;Initial Catalog=Cooec;uid=sa;pwd=ssssaaaa";

        public static SqlTransaction GetTransaction()
        {
            using (SqlConnection connection = new SqlConnection(SqlPlus.connectionString))
            {
                connection.Open();
                SqlTransaction trans = connection.BeginTransaction();
                return trans;
            }
        }

        public static void ConnClose(SqlConnection connection)
        {
            if (connection.State == ConnectionState.Open)
            {
                connection.Close();
            }
        }

        public static int ExecuteNonQuery(CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
        {
            SqlCommand cmd = new SqlCommand();
            using (SqlConnection conn = new SqlConnection(SqlPlus.connectionString))
            {
                PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);
                int val = cmd.ExecuteNonQuery();
                cmd.Parameters.Clear();
                return val;
            }
        }

        public static int ExecuteNonQuery(SqlConnection connection, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
        {

            SqlCommand cmd = new SqlCommand();

            PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters);
            int val = cmd.ExecuteNonQuery();
            cmd.Parameters.Clear();
            return val;
        }

        public static int ExecuteNonQuery(SqlTransaction trans, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
        {
            SqlCommand cmd = new SqlCommand();
            PrepareCommand(cmd, trans.Connection, trans, cmdType, cmdText, commandParameters);
            int val = cmd.ExecuteNonQuery();
            cmd.Parameters.Clear();
            return val;
        }

        public static SqlDataReader ExecuteReader(CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
        {
            SqlCommand cmd = new SqlCommand();
            SqlConnection conn = new SqlConnection(SqlPlus.connectionString);

            // we use a try/catch here because if the method throws an exception we want to 
            // close the connection throw code, because no datareader will exist, hence the 
            // commandBehaviour.CloseConnection will not work
            try
            {
                PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);
                SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
                cmd.Parameters.Clear();
                return rdr;
            }
            catch
            {
                conn.Close();
                throw;
            }
        }

        public static object ExecuteScalar(CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
        {
            SqlCommand cmd = new SqlCommand();

            using (SqlConnection connection = new SqlConnection(SqlPlus.connectionString))
            {
                PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters);
                object val = cmd.ExecuteScalar();
                cmd.Parameters.Clear();
                return val;
            }
        }

        public static object ExecuteScalar(SqlConnection connection, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
        {

            SqlCommand cmd = new SqlCommand();

            PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters);
            object val = cmd.ExecuteScalar();
            cmd.Parameters.Clear();
            return val;
        }

        public static DataTable ExecuteDataTable(CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
        {
            SqlCommand cmd = new SqlCommand();
            DataTable oTab = new DataTable();
            using (SqlConnection connection = new SqlConnection(SqlPlus.connectionString))
            {
                PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters);
                SqlDataAdapter adp = new SqlDataAdapter(cmd);
                adp.Fill(oTab);
            }
            return oTab;
        }

        public static void CacheParameters(string cacheKey, params SqlParameter[] commandParameters)
        {
            parmCache[cacheKey] = commandParameters;
        }

        public static SqlParameter[] GetCachedParameters(string cacheKey)
        {
            SqlParameter[] cachedParms = (SqlParameter[])parmCache[cacheKey];

            if (cachedParms == null)
                return null;

            SqlParameter[] clonedParms = new SqlParameter[cachedParms.Length];

            for (int i = 0, j = cachedParms.Length; i < j; i++)
                clonedParms[i] = (SqlParameter)((ICloneable)cachedParms[i]).Clone();

            return clonedParms;
        }

        private static void PrepareCommand(SqlCommand cmd, SqlConnection conn, SqlTransaction trans, CommandType cmdType, string cmdText, SqlParameter[] cmdParms)
        {

            if (conn.State != ConnectionState.Open)
                conn.Open();

            cmd.Connection = conn;
            cmd.CommandText = cmdText;

            if (trans != null)
                cmd.Transaction = trans;

            cmd.CommandType = cmdType;

            if (cmdParms != null)
            {
                foreach (SqlParameter parm in cmdParms)
                    cmd.Parameters.Add(parm);
            }
        }
    }

    public static class Database
    {
        public static SqlParameter MakeInParam(string parameterName, SqlDbType dbType, int size)
        {
            SqlParameter sqlPar = new SqlParameter(parameterName, dbType, size);
            return sqlPar;
        }
        public static SqlParameter MakeInParam(string parameterName, SqlDbType dbType, int size, object oValue)
        {
            SqlParameter sqlPar = new SqlParameter(parameterName, dbType, size);
            sqlPar.Value = oValue;
            return sqlPar;
        }
        public static SqlParameter MakeInParam(string parameterName, SqlDbType dbType, int size, string sValue)
        {
            SqlParameter sqlPar = new SqlParameter(parameterName, dbType, size);
            sqlPar.Value = sValue;
            return sqlPar;
        }
        public static SqlParameter MakeInParam(string parameterName, SqlDbType dbType, int size, int iValue)
        {
            SqlParameter sqlPar = new SqlParameter(parameterName, dbType, size);
            sqlPar.Value = iValue;
            return sqlPar;
        }
        public static SqlParameter MakeInParam(string parameterName, SqlDbType dbType, int size, DateTime dValue)
        {
            SqlParameter sqlPar = new SqlParameter(parameterName, dbType, size);
            if (dValue == DateTime.MinValue)
                sqlPar.Value = DBNull.Value;
            else
                sqlPar.Value = dValue;
            return sqlPar;
        }
        public static SqlParameter MakeInParam(string parameterName, SqlDbType dbType, int size, double dValue)
        {
            SqlParameter sqlPar = new SqlParameter(parameterName, dbType, size);
            sqlPar.Value = dValue;
            return sqlPar;
        }
        public static string ValueToString(object oValue)
        {
            if (oValue == System.DBNull.Value)
                return "";
            else
                return oValue.ToString();
        }
        public static DateTime ValueToDateTime(object oValue)
        {
            if (oValue == System.DBNull.Value)
                return DateTime.MinValue;
            else
                return Convert.ToDateTime(oValue);
        }
        public static int ValueToInt(object oValue)
        {
            if (oValue == System.DBNull.Value)
                return int.MinValue;
            else
                return Convert.ToInt32(oValue);
        }
    }

转载于:https://www.cnblogs.com/luking/archive/2008/10/20/1315186.html

封装一个通用的数据库操作类相关推荐

  1. 如何用C++封装一个简单的数据流操作类(附源码),从而用于网络上的数据传输和解析?

    历史溯源 由于历史原因,我们目前看到的大部分的网络协议都是基于ASCII码这种纯文本方式,也就是基于字符串的命令行方式,比如HTTP.FTP.POP3.SMTP.Telnet等.早期操作系统UNIX( ...

  2. golang mysql封装_使用Golang 封装一个Api 框架 ----- 数据库操作篇(gorm引入)

    在models/baseModel 定义了 一个BaseModel对象,在这个对象上定义了 获取数据库连接和 释放数据库连接的方法 type BaseModel struct { dbConnect ...

  3. php封装数据库操作类,php简单数据库操作类的封装

    本文实例为大家分享了php封装一个简单的数据库操作类,供大家参考,具体内容如下 一.代码 class conndb{ private $local; private $username; privat ...

  4. PHP操作mongodb数据库操作类

    最近的项目开发中使用的数据库是mongodb数据库,因为小编的公司也是刚刚使用mongodb数据库,所以之前没有封装好的mongodb数据库操作类拿来使用,所以小编在项目中自己封装了一个mongodb ...

  5. mysql 数据库操作类_【数据库操作类】10个php操作数据库类下载

    数据库(Database)操作是在开发过程中重要的组成部分,熟练掌握数据库的操作是开发人员必备的武器.PHP中文网为大家提供了各种封装好的php数据库操作类库,供大家下载和学习. 相关mysql视频教 ...

  6. 全新的PDO数据库操作类(仅适用Mysql)

    1年前,也差不多刚开博那会,分享过一个pdo的数据库操作类(可参见:http://www.cnblogs.com/hooray/archive/2011/06/30/2094743.html),与其说 ...

  7. 一个简单而又灵活的数据库操作类

    一个简单而又灵活的数据库操作类 作者: 紫瑗 ***************************************************************************** ...

  8. 封装一个自己的golang操作MySQL数据库工具

    封装一个自己的golang操作MySQL数据库工具 准备工作 导入驱动 连接mysql 增删改查 增 删 改 查 准备工作 首先我们要准备一个写golang的IDE,我用的是goland,还可以用vs ...

  9. php精辟代码欣赏,数据库操作类,封装所有数据库操作

    下面是php各种代码库,个人分享 <?php //******************************************************************* //此处 ...

最新文章

  1. voc生成xml 代码
  2. python里unexpected eof while parsing_使用Python编程时的10个注意事项
  3. Python(11):正则表达式
  4. SAP Spartacus Title 下拉菜单列表数据的读取逻辑
  5. LIS最长上升子序列
  6. c语言判断闰年_C语言1博客作业06 - D丶千思
  7. 用python画糖葫芦_python学习记录六
  8. 设计模式笔记2-简单工厂模式(带有自制UML类图)
  9. stl文件的解析和在线3d打印
  10. coreldraw怎么扣圆形_coreldraw如何抠图?coreldraw抠图图文教程
  11. 数字后端概念——cut metal
  12. 电动汽车续航标准傻傻分不清楚?别再被车企的等速续航骗了!
  13. linux huge模式设置,Linux 下 Hugepages的配置
  14. 程序猿如何保护眼睛方法.
  15. linux vim取消加密,linux 使用vim文件加密/解密的方法
  16. 输出所有的“水仙花数“
  17. VSCode安装和Python安装及其配置
  18. 查询mysql数据库里的某字段值所对应的表名与字段名
  19. 最强大的主动扫描工具-Nmap
  20. javascript实现关键字搜索和匹配关键字高亮效果

热门文章

  1. Qt学习之QTreeWidget、QTableWidget
  2. 电子万能试验机门式与单臂式结构,区别还是蛮大的
  3. 计算机导论相关ppt,计算机导论PPT 数制.ppt.ppt
  4. 第15.22节 PyQt(Python+Qt)入门学习:Model/View架构详解
  5. 花了几万学费学不会php,终于找到大家学不会PHP开发的原因了!
  6. 入门指南 | 写给打算进入IT行业的新人们!
  7. Planning-碰撞检测之GJK
  8. 快、狠、准排查各类系统故障的运维套路
  9. P存储 EVA6000 服务器无法识别VG
  10. 你认为,世界上最无聊的工作是什么?