• 大小: 3KB
    文件类型: .rar
    金币: 2
    下载: 1 次
    发布日期: 2021-05-07
  • 语言: C#
  • 标签: c#  反射  sql  

资源简介

利用反射动态拼接sql。 daohelper属于DAL层,objectdata类属于BLL层,BLL层引用DAL层。映射数据的表继承objectdata类。例如,数据表book,根据字段与属性一一对应的方式创建book类,插入数据库时,直接book.save()

资源截图

代码片段和文件信息

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Reflection;
using System.Data.SqlClient;
using System.Configuration;
using System.Data;
using System.Data.SqlTypes;

namespace Dal
{
    /*
     * 操作数据库的方法
     * 约定:
     * 1)对象属性必须有public string TableName
     * 2)属性名与字段名一样。
     * 3)主键属性需标记自定义特性KeyFlagAttribute,表示此属性是数据表中的主键
     * 4)数据表中每个表必须设有主键
     */
    public class DAOHelp
    {
        #region 属性
        /// 
        /// 数据库连接字符串
        /// add cjk 2013-12-20
        /// 

        private static string connectionString = ConfigurationManager.ConnectionStrings[“mydataConnectionString“].ToString();
        #endregion


        #region 数据库增、删、改、查
        /// 
        /// 数据库的插入或更新的方法
        /// add cjk 2013-12-20
        /// 

        /// 要存入数据库的对象
        public static int Save(object obj)
        {
            int n = 0;
            using (SqlConnection conn = new SqlConnection(connectionString))
            {
                conn.Open();
                StringBuilder sql = new StringBuilder();
                StringBuilder sqlend = new StringBuilder();
                //获取对象的属性数组
                PropertyInfo[] pro = obj.GetType().GetProperties();
                //主键属性数组
                List idlist = GetIdProperty(pro);
                //要更新的数据表
                string table = FindPropertyInfoValue(obj “TableName“).ToString();
                //执行的sql语句
                string sqltext = string.Empty;
                //INSERT INTO table_name (列1 列2...) VALUES (值1 值2....)
                sql.Append(“INSERT INTO “ + table + “(“);
                sqlend.Append(“ VALUES (“);

                foreach (PropertyInfo item in pro)
                {//拼接sql语句主体
                    if (item.Name == “TableName“)
                    {
                        continue;
                    }
                    else
                    {
                        string columnValue = item.GetValue(obj null) + ““;
                        if (string.IsNullOrEmpty(columnValue))
                        {//去掉空属性
                            continue;
                        }
                        if (item.PropertyType == typeof(DateTime))
                        {//时间属性初始化时未赋值会变为默认最小值
                            DateTime dt;
                            DateTime.TryParse(columnValue out dt);
                            if (dt <= SqlDateTime.MinValue.Value)
                                continue;
                        }
                        sql.Append(“ “ + item.Name + ““);
                        sqlend.Append(“ ‘“ + columnValue + “‘“);
                    }
                }
                string start = sql.ToString();
                start = start.Substring(0 start.Length - 1) + “)“;
                string end = sqlend.ToString();
  

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       1426  2013-12-21 14:56  objectData.cs

     文件      12297  2013-12-21 15:27  DAOHelp.cs

----------- ---------  ---------- -----  ----

                13723                    2


评论

共有 条评论