亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

支持多類型數據庫的c#數據庫模型示例

2020-01-24 02:57:20
字體:
來源:轉載
供稿:網友

DataAccess.cs

復制代碼 代碼如下:

using System;
using System.Collections.Generic;
using System.Text;

namespace DynamicFramework
{
    public abstract class DataAccess : MarshalByRefObject
    {
        protected System.Data.Common.DbConnection connection;
        protected string cnnstr = "";
        protected DataAccess()
        {
        }

        public static string ConnPath = System.Windows.Forms.Application.StartupPath + "http://LocalDB.mdb";
        public static DataAccess LocalDb
        {
            get
            {
                return new OleAccess("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + ConnPath);
                //return new SqlClientAccess("Server=localhost;Trusted_Connection=true;Database=RestaurantDB");
            }
        }

        public static DataAccess ServerDb
        {
            get
            {
                //return new OleAccess("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + ConnPath);
                //if (Configs.LocalConfig.Instanct.IsLocalServer)
                //{

                //}
                //Trusted_Connection=true;
                //return new SqlClientAccess("Server=.;Database=RestaurantDB,uid = sa,pwd =");

                return new SqlClientAccess("Data Source=.;Initial Catalog=RestaurantDB;Persist Security Info=True;User ID=sa");
            }
        }

        private System.Data.Common.DbCommand GetCommand(string sql, Dictionary<string, object> parameters)
        {
            System.Data.Common.DbCommand cmd = connection.CreateCommand();
            cmd.CommandText = sql;
            if (parameters != null)
            {
                foreach (KeyValuePair<string, object> item in parameters)
                {
                    System.Data.Common.DbParameter parameter = cmd.CreateParameter();
                    parameter.ParameterName = item.Key;
                    parameter.Value = item.Value;
                    cmd.Parameters.Add(parameter);
                }
            }
            return cmd;
        }

        #region DataAccess Command

        public int ExcuteCommand(string sql,Dictionary<string,object> parameters)
        {
            using (connection)
            {
                connection.ConnectionString = cnnstr;
                connection.Open();
                return GetCommand(sql, parameters).ExecuteNonQuery();
            }     
        }

        public object ExecuteScalar(string sql, Dictionary<string, object> parameters)
        {
            using (connection)
            {
                connection.ConnectionString = cnnstr;
                connection.Open();
                return GetCommand(sql, parameters).ExecuteScalar();
            }
        }

        public object ExecuteReader(string sql, Dictionary<string, object> parameters)
        {
            using (connection)
            {
                connection.ConnectionString = cnnstr;
                connection.Open();
                return GetCommand(sql, parameters).ExecuteReader();
            }
        }


        public System.Data.DataTable ExecuteDataTable(string sql)
        {
            return ExecuteDataTable(sql, null);
        }

        public System.Data.DataTable ExecuteDataTable(string sql, Dictionary<string, object> parameters)
        {
            using (connection)
            {
                connection.ConnectionString = cnnstr;
                connection.Open();
                return DbHelper.ToTable(GetCommand(sql, parameters).ExecuteReader());
            }
        }

        public List<T> ExcuteList<T>(string sql, Dictionary<string, object> parameters) 
        {
            using (connection)
            {
                connection.ConnectionString = cnnstr;
                connection.Open();
                return DbHelper.ToList<T>(GetCommand(sql, parameters).ExecuteReader());
            }
        }

        public T GetEntity<T>(string sql, Dictionary<string, object> parameters)
        {
            using (connection)
            {
                connection.ConnectionString = cnnstr;
                connection.Open();
                return DbHelper.ToEntity<T>(GetCommand(sql, parameters).ExecuteReader());
            }
        }

        public List<T> ExcuteList<T>()
        {
            using (connection)
            {
                connection.ConnectionString = cnnstr;
                connection.Open();
                return DbHelper.ToList<T>(GetCommand(string.Format("select * from {0}", typeof(T).Name), null).ExecuteReader());
            }
        }

        public System.Data.DataTable FillDataTable(string sql)
        {
            return FillDataTable(sql, null);
        }

        public System.Data.DataTable FillDataTable(string sql, Dictionary<string, object> parameters)
        {
            System.Data.DataTable dt = new System.Data.DataTable();
            Fill(dt, GetCommand(sql, parameters));
            return dt;           
        }

        public int Fill(System.Data.DataTable dt, System.Data.Common.DbCommand cmd)
        {
            using (connection)
            {
                connection.ConnectionString = cnnstr;
                connection.Open();
                System.Data.Common.DbDataAdapter adapter = CreateAdapter();
                adapter.SelectCommand = cmd;

                return adapter.Fill(dt);
            }
        }
        public int SaveDataTable(System.Data.DataTable dt)
        {
            return SaveDataTable(dt, dt.TableName);
        }
        public int SaveDataTable(System.Data.DataTable dt, string tableName)
        {
            return SaveTable(dt, "select * from " + tableName + " where 1 = 2");
        }

        public int SaveTable(System.Data.DataTable dt, string sql)
        {
            using (connection)
            {
                connection.ConnectionString = cnnstr;
                connection.Open();
                System.Data.Common.DbDataAdapter adapter = CreateAdapter();
                adapter.SelectCommand = GetCommand(sql, null);
                System.Data.Common.DbCommandBuilder cmdBuild = CreateCommandBuilder();
                cmdBuild.DataAdapter = adapter;
                cmdBuild.QuotePrefix = "[";
                cmdBuild.QuoteSuffix = "]";
                return adapter.Update(dt);
            }
        }

        public int SaveDataSet(System.Data.DataSet ds)
        {
            using (connection)
            {
                connection.ConnectionString = cnnstr;
                connection.Open();
                int updates = 0;
                foreach (System.Data.DataTable item in ds.Tables)
                {
                    updates += SaveDataTable(item);
                }
                return updates;
            }
        }

        #endregion

        internal virtual System.Data.Common.DbDataAdapter CreateAdapter()
        {
            throw new System.ApplicationException("DbDataAdapter Can Not Created!");
        }

        public virtual System.Data.Common.DbCommandBuilder CreateCommandBuilder()
        {
            throw new System.ApplicationException("DbCommandBuilder Can Not Created!");
        }


    }
}

 DbHelper.cs

 

復制代碼 代碼如下:

 using System;
using System.Collections.Generic;
using System.Text;

namespace DynamicFramework
{
    public sealed class DbHelper
    {
        public static List<T> ToList<T>(System.Data.IDataReader reader) 
        {
            List<T> list = new List<T>();
            Csla.Data.SafeDataReader sr = new Csla.Data.SafeDataReader(reader);
            while (sr.Read())
            {
                T t = Activator.CreateInstance<T>();
                Type entityType = t.GetType();
                for (int i = 0; i < sr.FieldCount; i++)
                {
                    string pName = reader.GetName(i);
                    System.Reflection.PropertyInfo p = entityType.GetProperty(pName);
                    if (p != null)
                    {
                        p.SetValue(t, GetValue(p,sr,i), null);
                    }
                }
                list.Add(t);
            }           
            return list;
        }

        private static object GetValue(System.Reflection.PropertyInfo p,Csla.Data.SafeDataReader sr,int index)
        {
            if (p.PropertyType == typeof(string))
            {
                return sr.GetString(index);
            }
            else if (p.PropertyType == typeof(int))
            {
                return sr.GetInt32(index);
            }
            else if (p.PropertyType == typeof(decimal))
            {
                return sr.GetDecimal(index);
            }
            else if (p.PropertyType == typeof(DateTime))
            {
                return sr.GetDateTime(index);
            }
            else if (p.PropertyType == typeof(bool))
            {
                return sr.GetBoolean(index);
            }
            else if (p.PropertyType == typeof(double))
            {
                return sr.GetDouble(index);
            }
            else
            {
                return sr.GetValue(index);
            }

        }

        public static T ToEntity<T>(System.Data.IDataReader reader)
        {
            Csla.Data.SafeDataReader sr = new Csla.Data.SafeDataReader(reader);
            while (sr.Read())
            {
                T t = Activator.CreateInstance<T>();
                Type entityType = t.GetType();
                for (int i = 0; i < sr.FieldCount; i++)
                {
                    string pName = reader.GetName(i);
                    System.Reflection.PropertyInfo p = entityType.GetProperty(pName);
                    if (p != null)
                    {
                        p.SetValue(t, GetValue(p, sr, i), null);
                    }
                }
                return t;
            }
            return default(T);
        }

        public static List<T> TableToList<T>(System.Data.DataTable dt) 
        {
            return ToList<T>(dt.CreateDataReader());
        }

        public static System.Data.DataTable ListToTable<T>(IList<T> list)
        {
            if (list == null) return null;

            System.Data.DataTable dt = new System.Data.DataTable(typeof(T).Name);

            System.Reflection.PropertyInfo[] props = typeof(T).GetProperties();
            if (props.Length >= 0)
            {
                for (int column = 0; column < props.Length; column++)
                {
                    dt.Columns.Add(props[column].Name, props[column].PropertyType);
                }
            }
            foreach (T item in list)
            {
                System.Data.DataRow dr = dt.NewRow();
                foreach (System.Data.DataColumn column in dt.Columns)
                {
                    dr[column] = item.GetType().GetProperty(column.ColumnName).GetValue(item, null);
                }
                dt.Rows.Add(dr);
            }
            //dt.AcceptChanges();           
            return dt;
        }

        public static System.Data.DataTable ToTable(System.Data.IDataReader reader)
        {
            System.Data.DataTable dt = new System.Data.DataTable();          
            dt.Load(reader);
            return dt;
        }

        public static void SaveEntity<T>(T obj)
        {
            string tb = obj.GetType().Name;
            string SQL = "insert into {0}({1})values({2})";
            string fles = "";
            string sparam = "";
            Dictionary<string, object> dicParams = new Dictionary<string, object>();
            foreach (System.Reflection.PropertyInfo var in obj.GetType().GetProperties())
            {
                fles += var.Name + ",";
                sparam += "@" + var.Name + ",";
                dicParams.Add("@" + var.Name,var.GetValue(obj, null));
            }
            SQL = string.Format(SQL, tb, fles.Remove(fles.Length - 1), sparam.Remove(sparam.Length - 1));
            DataAccess.ServerDb.ExecuteScalar(SQL, dicParams);           
        }

        public static void SaveLocalEntity<T>(T obj)
        {
            string tb = obj.GetType().Name;
            string SQL = "insert into {0}({1})values({2})";
            string fles = "";
            string sparam = "";
            Dictionary<string, object> dicParams = new Dictionary<string, object>();
            foreach (System.Reflection.PropertyInfo var in obj.GetType().GetProperties())
            {
                fles += var.Name + ",";
                sparam += "@" + var.Name + ",";
                dicParams.Add("@" + var.Name, var.GetValue(obj, null));
            }
            SQL = string.Format(SQL, tb, fles.Remove(fles.Length - 1), sparam.Remove(sparam.Length - 1));
            DataAccess.LocalDb.ExecuteScalar(SQL, dicParams);
        }
    }


    #region DataAsss == OleDb - SqlClient - SQLite

    public class OleAccess : DataAccess
    {
        public OleAccess()
        {
            connection = new System.Data.OleDb.OleDbConnection();
        }

        public OleAccess(string connectionString)
        {
            connection = new System.Data.OleDb.OleDbConnection(connectionString);
            cnnstr = connectionString;
        }

        internal override System.Data.Common.DbDataAdapter CreateAdapter()
        {
            return new System.Data.OleDb.OleDbDataAdapter();
        }

        public override System.Data.Common.DbCommandBuilder CreateCommandBuilder()
        {
            return new System.Data.OleDb.OleDbCommandBuilder();
        }
    }

    public class SqlClientAccess : DataAccess
    {
        public SqlClientAccess()
        {
            connection = new System.Data.SqlClient.SqlConnection();
        }

        public SqlClientAccess(string connectionString)
        {
            connection = new System.Data.SqlClient.SqlConnection(connectionString);
            cnnstr = connectionString;
        }

        internal override System.Data.Common.DbDataAdapter CreateAdapter()
        {
            return new System.Data.SqlClient.SqlDataAdapter();
        }

        public override System.Data.Common.DbCommandBuilder CreateCommandBuilder()
        {
            return new System.Data.SqlClient.SqlCommandBuilder();
        }
    }

    public class SQLiteAccess : DataAccess
    {
        public SQLiteAccess()
        {
            connection = new System.Data.SQLite.SQLiteConnection();
        }

        public SQLiteAccess(string connectionString)
        {
            connection = new System.Data.SQLite.SQLiteConnection(connectionString);
            cnnstr = connectionString;
        }

        internal override System.Data.Common.DbDataAdapter CreateAdapter()
        {
            return new System.Data.SQLite.SQLiteDataAdapter();
        }

        public override System.Data.Common.DbCommandBuilder CreateCommandBuilder()
        {
            return new System.Data.SQLite.SQLiteCommandBuilder();
        }
    }


    #endregion
}
 

 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲国产精品久久久久秋霞蜜臀| 日本成熟性欧美| 精品欧美aⅴ在线网站| 欧美成人免费va影院高清| 日韩在线观看视频免费| 亚洲美腿欧美激情另类| 亚洲欧美日韩另类| 精品国产视频在线| 国产精品久久久久免费a∨| 亚洲午夜未满十八勿入免费观看全集| 成人免费视频在线观看超级碰| 精品国产31久久久久久| 91国内产香蕉| 一本大道久久加勒比香蕉| 亚洲国产成人爱av在线播放| 日本精品久久久久久久| 波霸ol色综合久久| 国产伦精品免费视频| 成人免费视频在线观看超级碰| 亚洲精品视频网上网址在线观看| 不卡av日日日| 一区二区三区视频免费在线观看| 色综合久久中文字幕综合网小说| 亚洲最大中文字幕| 91亚洲va在线va天堂va国| 2021久久精品国产99国产精品| 日韩欧美国产激情| 日韩免费精品视频| 欧美精品中文字幕一区| 国产91免费观看| 国产日韩在线观看av| 欧美成人国产va精品日本一级| 日韩一区视频在线| 国产成人在线一区| 2021久久精品国产99国产精品| 亚洲精品动漫100p| 中文字幕视频在线免费欧美日韩综合在线看| 亚洲天堂一区二区三区| 在线成人中文字幕| 欧美视频不卡中文| 久久成人一区二区| 日韩一区二区三区xxxx| 国产精品成人品| 欧美精品www在线观看| 成人黄色在线免费| 久久精品视频亚洲| 日韩成人激情视频| 青草热久免费精品视频| 国产精品久久久久久久av大片| 中文字幕av一区二区| 亚洲欧美日韩一区二区在线| 国产99久久精品一区二区 夜夜躁日日躁| 国产91亚洲精品| 国产精品三级网站| 久久久国产91| 2024亚洲男人天堂| 国产精品网址在线| 欧美激情精品久久久久久变态| 欧美午夜精品久久久久久浪潮| 日韩最新免费不卡| 亚洲精品91美女久久久久久久| 成人激情视频免费在线| 亚洲人成网站777色婷婷| 136fldh精品导航福利| 亚洲日韩欧美视频一区| 欧美黑人xxxⅹ高潮交| 久久久久久久香蕉网| 欧美国产日韩一区二区| 国产精品自产拍在线观| 97国产精品视频| 中日韩美女免费视频网址在线观看| www.亚洲人.com| 91久久在线播放| 91精品免费久久久久久久久| 欧美在线观看一区二区三区| 欧美成人免费在线视频| 日韩av在线影院| 91精品视频一区| 亚洲第一中文字幕在线观看| 青青草原成人在线视频| 庆余年2免费日韩剧观看大牛| 韩国美女主播一区| 日韩欧美一区二区三区| 午夜剧场成人观在线视频免费观看| 亚洲精品自拍第一页| 九九热精品视频在线播放| 91亚洲永久免费精品| 色噜噜狠狠色综合网图区| 欧美日本精品在线| 精品国内自产拍在线观看| 91视频九色网站| 亚洲综合国产精品| 亚洲天堂男人的天堂| 日韩亚洲国产中文字幕| 国产精品狠色婷| 欧美中文在线观看国产| 狠狠躁夜夜躁久久躁别揉| 日本在线精品视频| 日韩av在线免费| 91美女片黄在线观| 精品久久久久国产| 欧美日韩国产精品一区二区三区四区| 欧美刺激性大交免费视频| 欧美日韩亚洲视频| 久久精品91久久久久久再现| 日韩在线视频中文字幕| 96sao精品视频在线观看| 欧美成人午夜免费视在线看片| 91免费视频国产| 欧美激情乱人伦| 欧美激情一级精品国产| 亚洲三级黄色在线观看| 成人免费看片视频| 亚洲成人国产精品| 日本精品久久久久影院| 欧美激情在线观看视频| 国产在线视频91| 欧美大尺度电影在线观看| 欧美在线免费观看| 欧美小视频在线| 久久成人人人人精品欧| 亚洲午夜性刺激影院| 日韩中文视频免费在线观看| 日本一本a高清免费不卡| 136fldh精品导航福利| 欧美亚洲成人xxx| 国产欧美欧洲在线观看| 最近2019年中文视频免费在线观看| 精品中文字幕在线2019| 欧美激情精品久久久久久蜜臀| 欧洲午夜精品久久久| 日本一区二三区好的精华液| 性色av一区二区三区| 5278欧美一区二区三区| 久久福利网址导航| 日韩电视剧在线观看免费网站| 欧美激情影音先锋| 亚洲精品wwww| 欧美另类极品videosbestfree| 亚洲国产私拍精品国模在线观看| 亚洲精品影视在线观看| 国内揄拍国内精品| 精品一区二区电影| 91免费看片网站| 亚洲人在线观看| 国产盗摄xxxx视频xxx69| 色悠久久久久综合先锋影音下载| 久久夜色精品国产欧美乱| 秋霞成人午夜鲁丝一区二区三区| 一区二区三区视频在线| 久久天天躁日日躁| 亚洲精品乱码久久久久久金桔影视| 日韩欧美主播在线| 人九九综合九九宗合| 在线亚洲国产精品网| 久久福利视频网| 亚洲精品一区二区久| 亚洲精品综合精品自拍| 国产午夜一区二区| 亚洲免费视频观看| 日韩欧美在线中文字幕| 久久久久久中文字幕| 午夜精品99久久免费| 国产欧美中文字幕|