`
tiansoft
  • 浏览: 175607 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

c#工具类

阅读更多
每当在编写程序的时候公司总是使用数据源,虽然数据源比较快,但是移植性差,都是要重复写很多的代码,近来在与公司的同事交流的时候,尽量要用ADO.net的方式,以下是一个工具类,以后再写程序的时候就可以直接调用,实现相关的功能,这样可以节省编写代码。
using System;
using System.Collections.Generic;
using System.Text;
using System.Data.SqlClient;
using System.Data;
using System.Configuration;

namespace gov_corp.db
{
    public class DBHelper
    {
        //获取连接字符串

        static string conStrs = "server=.;database=gov_corp;uid=sa;pwd=sa";
        //连接对象
        private static SqlConnection conn;
        //连接对象的设置

        public static SqlConnection Conn
        {
            get
            {
                if (conn == null)
                {
                    conn = new SqlConnection(conStrs);
                    conn.Open();
                }
                if (conn.State == ConnectionState.Broken)
                {
                    conn.Close();
                    conn.Open();
                }
                if (conn.State == ConnectionState.Closed)
                {
                    conn.Open();
                }

                return DBHelper.conn;

            }
        }
        /// <summary>
        /// 关闭的方法

        /// </summary>
        public static void CloseConn()
        {
            if (Conn != null && Conn.State != ConnectionState.Closed)
            {
                Conn.Close();
            }
        }
        /// <summary>
        /// 通用增删改的方法
        /// </summary>
        /// <param name="sql"></param>
        /// <param name="type"></param>
        /// <returns></returns>
        public static int ExcuteCommand(string sql)
        {
            //创建commond对象
            SqlCommand cmd = new SqlCommand(sql, Conn);
            //指定命令类型
            cmd.CommandType = CommandType.Text;
            //执行结果
            int count = cmd.ExecuteNonQuery();
            //调用关闭连接的方法

            CloseConn();
            return count;
        }

        /// <summary>
        /// 查询单个值

        /// </summary>
        /// <param name="sql"></param>
        /// <param name="type"></param>
        /// <returns></returns>
        public static object GetScaler(string sql)
        {
            //创建command对象
            SqlCommand cmd = new SqlCommand(sql, Conn);
            //指定命令类型
            cmd.CommandType = CommandType.Text;
            //执行查询返回具体行数
            Object count = cmd.ExecuteScalar();
            CloseConn();
            return count;
        }
        /// <summary>
        /// 查询多条数据方法
        /// </summary>
        /// <param name="sql"></param>
        /// <param name="type"></param>
        /// <returns></returns>
        public static DataTable GetTable(string sql)
        {
            //创建读取器

            SqlDataAdapter sda = new SqlDataAdapter(sql, Conn);
            //指定命令
            sda.SelectCommand.CommandType = CommandType.Text;
            DataTable dt = new DataTable();
            sda.Fill(dt);
            return dt;
        }


    }
}

还有一个:
using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;
using System.Reflection;
using System.Data;
using System.Reflection;

namespace gov_corp.db
{
    /// <summary>
    /// 根据条件创建特定的SQL语句
    /// </summary>
    public class SqlFactory
    {
        /// <summary>
        /// 根据条件获取数据库查询语句

        /// </summary>
        /// <param name="con">条件对象</param>
        /// <returns>数据库操作对象</returns>
        /// <action>注意了!!如果要分组查询的,con对象的FieldList里面,一定别加进ID字段,否则报错</action>
        public string SelectSqlBuilder(Conditions con)
        {
            //声明数据库语句,先置空,以备返回
            string sql = "";
            //获取where条件字符串

            string where = this.MakeWhere(con.WhereList);
            //获取排序字符串

            string order = this.MakeOrder(con.OrderList);
            //获取字段或者聚合函数等查询条件字符串

            string field = this.MakeField(con.FieldList);
            //获取分组条件字符串

            string group = this.MakeGroup(con.GroupList);
            //封装数据库查询语句

            sql = "select " + field + " from " + con.TableName + where + group + order + ";";
            //返回数据库语句

            return sql;
        }
        /// <summary>
        /// 修改数据库语句

        /// </summary>
        /// <param name="con">条件对象</param>
        /// <returns>修改数据库操作语句</returns>
        public string UpdateSqlBuilder(Conditions con)
        {
            //声明数据库语句,先置空,以备返回
            string sql = "";
            //获取where条件字符串

            string where = this.MakeWhere(con.WhereList);
            string update = "";
            if (con.Obj != null)
            {
                //获取更新的字符串
                update = this.MakeUpdate(con.Obj);
            }
            else
            {
                update = this.MakeManyUpdate(con.UpdateList);
            }
            //拼装sql语句
            sql = "update " + con.TableName + " set " + update + where + ";";
            //返回数据库语句

            return sql;
        }
        /// <summary>
        /// 获取插入数据库记录的语句
        /// </summary>
        /// <param name="con">条件对象</param>
        /// <returns>插入数据库语句</returns>
        public string InsertSqlBuilder(Conditions con)
        {
            //声明数据库语句,先置空,以备返回
            string sql = "";
            //获取插入语句的值字符串
            string valueString = this.MakeValue(con.ValueList);
            string fieldString = this.MakeField(con.FieldList);
            //封装数据库操作语句

            sql = "insert into " + con.TableName +"("+ fieldString +")"+ valueString + ";";
            //返回数据库语句

            return sql;
        }
        /// <summary>
        /// 获取删除数据库记录的语句
        /// </summary>
        /// <param name="con">条件对象</param>
        /// <returns>删除数据库语句</returns>
        public string DeleteSqlBuilder(Conditions con)
        {
            //声明数据库语句,先置空,以备返回
            string sql = "";
            //获取where条件字符串

            string where = this.MakeWhere(con.WhereList);
            //封装sql
            sql = "delete from " + con.TableName + where + ";";
            //返回数据库语句

            return sql;
        }
        /// <summary>
        /// 拆分where条件集合,拼装成一个where条件字符串

        /// </summary>
        /// <param name="whereList">条件集合</param>
        /// <returns>where条件字符串</returns>
        public string MakeWhere(ArrayList whereList)
        {
            if (whereList == null || whereList.Count == 0)
            {
                return "";
            }
            //初始化where语句
            string where = " where ";
            foreach (object wh in whereList)
            {
                where += (wh.ToString().ToLower() + " and ");
            }
            where = where.Substring(0, (where.Length - 4));
            return where;
        }
        /// <summary>
        /// 拆分排序集合,拼装成一个排序order by 字符串

        /// </summary>
        /// <param name="orderList">排序集合</param>
        /// <returns>排序字符串</returns>
        public string MakeOrder(ArrayList orderList)
        {
            if (orderList == null || orderList.Count == 0)
            {
                return "";
            }
            //初始化排序语句

            string order = " order by ";
            //遍历排序集合
            foreach (object od in orderList)
            {
                order += (od.ToString().ToLower() + ",");
            }
            order = order.Substring(0, order.Length - 1);
            return order;
        }
        /// <summary>
        /// 获取更新数据库语句部分

        /// </summary>
        /// <param name="updateList">更新等式集合,如"name='tom'""age=20"</param>
        /// <returns></returns>
        public string MakeUpdate(object obj)
        {
            string uString = "";
            //遍历对象的所有属性集合

            foreach (System.Reflection.PropertyInfo objProperty in obj.GetType().GetProperties())
            {
                if (objProperty.GetValue(obj, null) == null)
                {
                    uString += (objProperty.Name + "= null,");
                }
                else
                {
                    //获取当前的属性名称的长度
                    int length = objProperty.Name.Length;
                    //根据参数对象的类型,这里需要所有的数据库建立时,实体类的名称+“_id”

                    string id = obj.GetType().ToString().ToLower() + "_id";
                    //截取和当前属性名称一样长度的
                    string ids = id.Substring(id.Length - length);
                    //获取当前属性名称

                    string s = objProperty.Name;
                    //这里做的是更新,但是主键XXX_id是不允许被修改的,所以要判断不是XXXX_id才可以,出去id那个字段
                    if(!(s==ids))
                    {
                        if (objProperty.GetValue(obj, null).GetType().ToString() == "System.String" || objProperty.GetValue(obj, null).GetType().ToString() == "System.DateTime")
                        {

                            uString += (objProperty.Name + "= '" + objProperty.GetValue(obj, null) + "',");
                        }
                        else
                        {
                            uString += (objProperty.Name + "= " + objProperty.GetValue(obj, null) + ",");
                        }
                    }
                }
            }
            uString = uString.Substring(0, uString.Length - 1);
            return uString;
        }
        /// <summary>
        /// 生成批量修改的数据库语句
        /// </summary>
        /// <param name="updateList">条件集合</param>
        /// <returns>返回修改数据库语句部分</returns>
        public string MakeManyUpdate(ArrayList updateList)
        {
            if(updateList == null || updateList.Count == 0)
            {
                return "";
            }
            string update = "";
            foreach (object ul in updateList)
            {
                update += (ul.ToString().ToLower() + ",");
            }
            update = update.Substring(0, update.Length - 1);
            return update;
        }

        /// <summary>
        /// 获取对象的所有属性,放入一个集合中
        /// </summary>
        /// <param name="o">对象</param>
        /// <returns>对象的属性集合</returns>
        public ArrayList GetObjectProperties(object o)
        {
            ArrayList pList = new ArrayList();
            PropertyInfo[] pis = o.GetType().GetProperties();
            foreach (PropertyInfo pi in pis)
            {
                pList.Add(pi.Name);
            }
            return pList;
        }
        /// <summary>
        /// 查询部分字段信息时,字段的连接

        /// </summary>
        /// <param name="fieldList">字段集合</param>
        /// <returns>字段字符串</returns>
        public string MakeField(ArrayList fieldList)
        {
            if (fieldList == null || fieldList.Count == 0)
            {
                return " * ";
            }
            string field = "";
            foreach (object fl in fieldList)
            {
                field += (fl.ToString().ToLower() + ",");
            }
            field =  field.Substring(0, field.Length - 1) ;
            return field;
        }
        /// <summary>
        /// 将分组集合,组合成分组字符串
        /// </summary>
        /// <param name="groupList">分组集合</param>
        /// <returns>分组字符串</returns>
        public string MakeGroup(ArrayList groupList)
        {
            if (groupList == null || groupList.Count == 0)
            {
                return " ";
            }
            string group = " group by ";
            foreach (object gl in groupList)
            {
                group += (gl.ToString().ToLower() + ",");
            }
            group = group.Substring(0, group.Length - 1);
            return group;
        }
        /// <summary>
        /// 将值的集合,组合成值的字符串

        /// </summary>
        /// <param name="valueList">进行数据库插入时值集合</param>
        /// <returns>值字符串</returns>
        public string MakeValue(ArrayList valueList)
        {
            if (valueList == null || valueList.Count == 0)
            {
                return "";
            }
            string valueString = "";
            for (int i = 0; i < valueList.Count; i++)
            {
                if (valueList[i] == null)
                {
                    valueString += "null,";
                }
                else
                {
                    if (valueList[i].GetType().ToString() == "System.String" || valueList[i].GetType().ToString() == "System.DateTime")
                    {
                        valueString += "'" + valueList[i].ToString().ToLower() + "',";
                    }
                    else
                    {
                        valueString += (valueList[i].ToString().ToLower() + ",");
                    }
                }
            }
            valueString = valueString.Substring(0, valueString.Length - 1);
            valueString = " values (" + valueString + ")";
            return valueString;
        }
        /// <summary>
        /// 根据对象,和datatable获得集合
        /// </summary>
        /// <param name="obj">对象</param>
        /// <param name="dt">虚拟表</param>
        /// <returns>对象对应类型的集合</returns>
        public ArrayList getListByObjectDatable(object obj,DataTable dt)
        {
            //创建集合以备返回
            ArrayList objList = new ArrayList();
            //得到对象的反射类型

            System.Reflection.PropertyInfo[] p = obj.GetType().GetProperties();
            //遍历dataview
            foreach (DataRow dr in dt.Rows)
            {
                foreach (System.Reflection.PropertyInfo pInfo in p)
                {
                    string s = (dr[pInfo.Name.ToLower()]).GetType().ToString();
                    if ((dr[pInfo.Name.ToLower()]).GetType().ToString()!="System.DBNull")
                    {
                        pInfo.SetValue(obj, dr[pInfo.Name.ToLower()], null);
                    }
                }
                objList.Add(obj);
            }
            //返回集合
            return objList;
        }
    }
    /// <summary>
    /// 封装数据库操作条件的类

    /// </summary>
    public class Conditions
    {
        /// <summary>
        /// 条件类的空参构造

        /// </summary>
        public Conditions(){}
        /// <summary>
        /// 条件类全参构造

        /// </summary>
        /// <param name="fieldList">字段查询目标集合</param>
        /// <param name="whereList">条件集合</param>
        /// <param name="groupList">分组集合</param>
        /// <param name="orderList">条件集合</param>
        /// <param name="updateList">修改时的集合,里面的内容如:"name='mary'"或者"age=23"</param>
        /// <param name="valueList">执行数据库插入操作的时候,值集合</param>
        /// <param name="obj">用户传入的对象</param>
        /// <author>成红雷</author>
        /// <date>2010-04-27</date>
        public Conditions(ArrayList fieldList, ArrayList whereList, ArrayList groupList, ArrayList orderList, ArrayList updateList, ArrayList valueList, object obj)
        {
            this.TableName = tableName;
            this.FieldList = fieldList;
            this.WhereList = whereList;
            this.GroupList = groupList;
            this.OrderList = orderList;
            this.UpdateList = updateList;
            this.ValueList = valueList;
            this.Obj = obj;
        }
        //表名
        private string tableName;

        public string TableName
        {
            get { return tableName; }
            set { tableName = value; }
        }
        //字段,数据库查询目标
        private ArrayList fieldList = null;

        public ArrayList FieldList
        {
            get { return fieldList; }
            set { fieldList = value; }
        }
        //条件集合
        private ArrayList whereList = null;

        public ArrayList WhereList
        {
            get { return whereList; }
            set { whereList = value; }
        }
        //分组集合
        private ArrayList groupList = null;

        public ArrayList GroupList
        {
            get { return groupList; }
            set { groupList = value; }
        }
        //排序集合
        private ArrayList orderList = null;

        public ArrayList OrderList
        {
            get { return orderList; }
            set { orderList = value; }
        }
        //执行数据库修改操作的,条件集合,形如:"name='sssss'"
        private ArrayList updateList = null;

        public ArrayList UpdateList
        {
            get { return updateList; }
            set { updateList = value; }
        }
        //执行数据库插入的时候,所提供的值集合

        private ArrayList valueList = null;

        public ArrayList ValueList
        {
            get { return valueList; }
            set { valueList = value; }
        }
        private object obj = null;

        public object Obj
        {
            get { return obj; }
            set { obj = value; }
        }

    }
}
分享到:
评论

相关推荐

    C#工具类库类库 包含所有的常用工具类

    标题中的"C#工具类库类库 包含所有的常用工具类"暗示了这是一个集合,包含了多种实用工具类,能够极大地提升开发效率。这些工具类涵盖了从文件操作到网络通信的多个领域。 首先,FTP操作类是用于与FTP服务器进行...

    Redis C# 工具类

    在C#开发中,我们经常需要创建工具类来方便地操作Redis。`Redis C# 工具类`是这样的一个辅助类库,它封装了对Redis的各种基本操作,包括Key、String、Set、SortSet和List等数据结构的管理。 首先,`Cache.config`...

    c#工具类源码大全

    "c#工具类源码大全"是一个集合了多种实用工具类的资源包,可以帮助开发者快速实现各种功能,提高开发效率。下面我们将详细探讨这个资源包中包含的一些关键知识点。 1. ASP.NET类库: ASP.NET是微软提供的一个用于...

    个人用的C#日常开发工具类

    C#工具类通常是一些预定义的、可重用的代码集合,这些代码封装了特定的逻辑或操作,以提高开发效率。它们可以是简单的数据结构,如堆栈、队列,也可以是复杂的算法实现,如排序、搜索。开发者可以将这些工具类集成到...

    Utility基础类大全.zip_Q98_c#工具类_c#通用类_happenedm1i_untlity

    在C#编程中,"Utility基础类大全.zip_Q98_c#工具类_c#通用类_happenedm1i_untlity"这个压缩包很可能包含了一系列用于日常开发的实用工具类,这些类通常是为了提高代码复用性和简化开发过程而设计的。下面将详细介绍...

    C#常用工具类代码集合Util(自己工作总结)

    C#工具类的编写是提高代码复用性和可维护性的重要手段,它们遵循单一职责原则,每个方法专注于完成一个特定的任务。同时,良好的工具类库应该有明确的命名,合理的API设计,以及充分的注释,以便其他开发者能快速...

    c# 操作工具类-好用的类库

    首先,让我们了解如何创建一个基础的C#工具类。通常,工具类是以静态类的形式存在的,因为它们不需要实例化,可以直接通过类名调用方法。例如,我们可以创建一个名为`Helper`的工具类: ```csharp public static ...

    迅雷C#工具类及Demo,完美接入迅雷云加速开放平台SDK

    这个压缩包文件包含了使用C#编写的工具类和一个Demo项目,目的是帮助开发者更好地理解和实现迅雷云加速功能。 首先,`ThunderDemo.sln`是一个Visual Studio解决方案文件,它包含了项目的配置信息,如引用的库、项目...

    自己写的一个C#工具类,功能很简单,但是很实用

    自己写的一个C#工具类,功能很简单,但是很实用,觉得有用就下吧。 主要的方法有:更简单的截取字符串方法, 格式化布尔值返回checkbox或指定的字符串, 格式化日期并以固定格式返回, 传递recordCount和pageSize...

    C#常用工具类代码集合Util第二版本(自己工作总结)

    C#常用工具类代码集合Util第二版本(自己工作总结),包括常用工具类,扩展方法工具类,百度地图C#工具类,Echart工具类,Office工具类,Autofac工具类,Web开发常用工具类,Winform开发常用工具类,是自己工作十年...

    C# 工具类

    在编写C#工具类时,为了保持代码的可读性和可维护性,还需要遵循良好的命名规范,合理地组织方法,并添加适当的注释。此外,可以利用泛型、扩展方法等C#特性来增强工具类的功能和灵活性。 总的来说,C#工具类是提高...

    OpencvSharp+PaddleOcr+雷电模拟器C# 工具类库.zip

    4. **C#工具类库**: 这个项目的重点是C#编程,工具类库通常包含一系列预先封装好的函数和类,方便开发者在不同的场景下快速调用,提高代码复用性。在这个案例中,类库可能包括了与OpenCV和PaddleOcr交互的接口,简化...

    自己整理的C#常用工具类

    在C#编程中,工具类(Utility Class)是一种常见的设计模式,它封装了一些常用的功能,以便在项目中方便地重复使用。这些工具类通常包含静态方法,不涉及实例化,直接通过类名调用,降低了代码冗余,提高了代码复用...

    C# Util 实用工具类

    C# Util中的Json工具类通常提供了序列化和反序列化JSON对象的方法,如将C#对象转换为JSON字符串,或者将JSON字符串解析为C#对象,这在处理API请求或保存配置文件时非常有用。 2. **Net**: 这部分可能包含网络通信...

    C# 工具类 泛型转JSON(Newtonsoft.Json)

    C# 工具类 泛型转JSON 使用 Newtonsoft.Json 转换JSON

    a c# utility library. C#工具包,C#工具类,常用方法,系统API,文件处理、加

    C#工具包,C#工具类,常用方法,系统API,文件处理、加密解密、Winform美化(C# Tools).zip优质项目,资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松copy复刻,拿到资料包后可轻松复现出一样的...

    C# 工具类 泛型转JSON(.Net Framework 4.0)

    C# 工具类 泛型转JSON 使用4.0 System.Runtime.Serialization.Json 进行JSON装换

    sqlite 数据库操作C# 工具类及使用实例

    本篇文章将深入探讨如何在C#中使用SQLite数据库,以及在VS2010下创建和操作SQLite数据库的工具类和实例。 首先,我们需要引入对SQLite的引用。在VS2010中,可以通过NuGet包管理器安装System.Data.SQLite库。这个库...

    C#200个工具类大全

    C#200个工具类大全

    C# 常用工具类

    C# 常用工具类:时间转化,获取网页源码,按照一定比例保存图片,获取四位随机数,下载到本地的文件完整路径, unicode转中文(符合js规则的), 移动文件,UBBHelper代码处理函数 等等

Global site tag (gtag.js) - Google Analytics