public void TestNoLock()
        {
            IDataBaseHandler idb = dbctx.Handler;

            using (DbTransactionScope dbt = new DbTransactionScope(idb))
            {
                Object obj = idb.ExecuteScalar("select [CompanyName] from Customers  where   [CustomerID] ='ANATR'");
                //  obj.ToString().Substring(0, obj.ToString().Length - 2) + DateTime.Now.Ticks.ToString().Substring(0, 2);
                String val       = obj.ToString();
                char[] charArray = val.ToCharArray();
                Array.Reverse(charArray);
                val = new string(charArray);//

                idb.ExecuteNonQuery("update Customers set [CompanyName]='" + val + "' where [CustomerID] ='ANATR'");
                IDataBaseHandler idb2 = dbctx.Handler;

                // idb2.ExecuteNonQuery(" SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED");

                obj = idb2.ExecuteScalar("select [CompanyName] from Customers  where   [CustomerID] ='ANATR'");
                System.Console.WriteLine(obj.ToString());
                DataSet ds = idb2.ExecuteQuery("select * from Customers");
                System.Console.WriteLine(ds.Tables[0].Rows.Count);
                dbt.Complete();
            }
        }
Пример #2
0
 /// <summary>
 /// 构造
 /// </summary>
 /// <param name="handler"></param>
 public TableDataInOut(IDataBaseHandler handler)
 {
     if (handler == null)
     {
         throw new ArgumentNullException();
     }
     m_handler = handler;
 }
        /// <summary>
        /// 删除此记录
        /// </summary>
        /// <returns></returns>
        public virtual bool Delete(IDataBaseHandler handler)
        {
            ORMContext ctx = new ORMContext(handler.DbContext.ConnectionInfo);
            IEntityHandler <EntityBase> hand = ctx.CreateHandler <EntityBase>(this, handler);
            int i = hand.Delete();

            return(i > 0);
        }
Пример #4
0
 /// <summary>
 /// 适应表结构字段到数据库类型
 /// </summary>
 /// <param name="tbl"></param>
 /// <param name="handler"></param>
 private void MapTableColToDbType(ref Table tbl, IDataBaseHandler handler)
 {
     for (int i = 0; i < tbl.Columns.Count; i++)
     {
         DataTableColumn dtc = tbl.Columns[i];
         handler.DbAdapter.GetSchemaHandler(handler).MapDBType(ref dtc);
     }
 }
Пример #5
0
        public void DbContextCreate()
        {
            //    DataBaseContext dbctx = new DataBaseContext(ci);
            IDataBaseHandler idbh = dbctx.Handler;
            DataSet          dt   = idbh.ExecuteQuery("select * from Customers");

            Assert.IsTrue(dt.Tables[0].Rows.Count > 0);
        }
        /// <summary>
        /// 构造Hadnler
        /// </summary>
        /// <param name="Entity"></param>
        /// <param name="handler"></param>
        public EntityHandler(T Entity, IDataBaseHandler handler)
        {
            IORMAdapter Adapter = ORMAdapterCreator.GetORMAdapter(handler.DbContext.ConnectionInfo.DataServerType);

            m_SQLBuilder = Adapter.CreateSQLBuilder(Entity, Adapter);
            m_Handle     = handler;
            m_Entity     = Entity;
        }
Пример #7
0
 /// <summary>
 /// 构造
 /// </summary>
 /// <param name="handler">数据库操作接口</param>
 public ExecuteSqlFile(IDataBaseHandler handler)
 {
     if (handler == null)
     {
         throw new ArgumentNullException();
     }
     m_handler = handler;
 }
        /// <summary>
        /// 根据查询条件取得数据集
        /// </summary>
        /// <param name="Stru"></param>
        /// <param name="handler"></param>
        /// <returns></returns>
        public static ArrayList GetArrayListBy(TblStruBase Stru, IDataBaseHandler handler)
        {
            DataSet           ds    = GetDataSetBy(Stru, handler);
            List <EntityBase> list  = DataLoader.LoadEntity <EntityBase>(ds, Stru.__EntityType);
            ArrayList         alist = new ArrayList();

            alist.AddRange(list);
            return(alist);
        }
Пример #9
0
        public void GetAllTables()
        {
            //    DataBaseContext dbctx = new DataBaseContext(ci);
            IDataBaseHandler idbh = dbctx.Handler;

            System.Collections.Generic.List <String> tbls = dbctx.DBAdapter.GetSchemaHandler(idbh).GetTableNames();//.DbAdapter..ExecuteQuery("select * from Customers");
            //  System.Console.WriteLine(tbls.Count);
            Assert.IsTrue(tbls != null && tbls.Count > 0);
            System.Console.WriteLine("GetAllTables:" + tbls.Count);
        }
Пример #10
0
        /// <summary>
        /// 删除记录为此主键值的记录
        /// </summary>
        /// <param name="tableName"></param>
        /// <param name="ID0Value"></param>
        /// <param name="handler"></param>
        /// <returns></returns>
        public static bool Delete(String tableName, string ID0Value, IDataBaseHandler handler)
        {
            if (String.IsNullOrEmpty(ID0Value))
            {
                return(false);
            }
            String sql = "delete from " + tableName + " where ID0 ='" + ID0Value + "'";
            int    i   = handler.ExecuteNonQuery(sql);

            return(i > 0);
        }
Пример #11
0
        /// <summary>
        /// 构造
        /// </summary>
        /// <param name="handler"></param>
        public TableSchemaToWord(IDataBaseHandler handler)
        {
            if (handler == null)
            {
                throw new ArgumentNullException();
            }
            m_handler = handler;

            m_wdapp         = new Microsoft.Office.Interop.Word.ApplicationClass();
            m_wdapp.Visible = false;
            m_wddoc         = new Microsoft.Office.Interop.Word.DocumentClass();
        }
        /// <summary>
        /// 尝试获取数据库时间
        /// </summary>
        /// <param name="handler"></param>
        /// <returns></returns>
        public DateTime GetDateTimeFromDB(IDataBaseHandler handler)
        {
            string SQL = handler.DbAdapter.GetSQLGenerator().GetDataBaseTimeSQL();

            if (!String.IsNullOrEmpty(SQL))
            {
                Object oDt = handler.ExecuteScalar(SQL);
                if (oDt != null && oDt != DBNull.Value)
                {
                    return(DateTime.Parse(Convert.ToString(oDt)));
                }
            }
            return(DateTime.Now);
        }
        /// <summary>
        /// 构造数据库相关的主键生成器
        /// </summary>
        /// <param name="DbHandle"></param>
        /// <returns></returns>
        public override IPKGenerator CreatePKGenerator(IDataBaseHandler DbHandle)
        {
            switch (m_Mapping.Generator.ToUpper())
            {
            case PKGeneratorEnum.LOCAL: return(new PKGeneratorSQLServerAuto());

            case PKGeneratorEnum.ORM_SEQUENCE:
                PKGeneratorSQLServerORMSequence pkg = new PKGeneratorSQLServerORMSequence();
                pkg.DBHandler = DbHandle;
                return(pkg);

            default: return(base.CreatePKGenerator(DbHandle));
            }
        }
Пример #14
0
 /// <summary>
 /// 根据表结构文档生成此连接下表结构Sql语句(无协调功能)
 /// </summary>
 /// <param name="handler"></param>
 /// <returns></returns>
 public string GetFixTableStuSqlByFile2(IDataBaseHandler handler)
 {
     for (int i = 0; i < this.List.Count; i++)
     {
         Table tbl = (Table)this.List[i];
         List <DataTableColumn> dtcl = tbl.Columns;
         for (int j = 0; j < dtcl.Count; j++)
         {
             DataTableColumn dtc = dtcl[j];
             //映射到当前的数据库类型下
             handler.DbAdapter.GetSchemaHandler(handler).MapDBType(ref dtc);
         }
     }
     //相当于全部以新的不存在的数据表添加进去
     return(handler.DbAdapter.GetSchemaHandler(handler).GetDbServerScript(this.List));
 }
Пример #15
0
        /// <summary>
        /// 构造数据库相关的主键生成器
        /// </summary>
        /// <param name="DbHandle"></param>
        /// <returns></returns>
        public override IPKGenerator CreatePKGenerator(IDataBaseHandler DbHandle)
        {
            switch (m_Mapping.Generator.ToUpper())
            {
            case PKGeneratorEnum.LOCAL:
                PKGeneratorOraSequence pg = new PKGeneratorOraSequence();
                pg.DBHandler = DbHandle;
                return(pg);

            case PKGeneratorEnum.ORM_SEQUENCE:
                PKGeneratorOraORMSequence pgo = new PKGeneratorOraORMSequence();
                pgo.DBHandler = DbHandle;
                return(pgo);

            default: return(base.CreatePKGenerator(DbHandle));
            }
        }
Пример #16
0
        /// <summary>
        /// 创建主键生成器
        /// </summary>
        /// <param name="PKGeneratorName">主键生成器名称</param>
        /// <param name="DbHandle"></param>
        /// <returns></returns>
        private static IPKGenerator CreatePKGenerator(String PKGeneratorName, IDataBaseHandler DbHandle)
        {
            Type PKGType = m_PKGTypeTable[PKGeneratorName] as Type;

            if (PKGType == null)
            {
                PKGType = GetPKGeneratorType(PKGeneratorName);
                m_PKGTypeTable[PKGeneratorName] = PKGType;
            }
            Object obj = Activator.CreateInstance(PKGType);
            IDBReferencePKGenerator DBReferencePKG = obj as IDBReferencePKGenerator;

            if (DBReferencePKG != null)
            {
                DBReferencePKG.DBHandler = DbHandle;
            }
            return(obj as IPKGenerator);
        }
Пример #17
0
        /// <summary>
        /// 获取主键生成器
        /// </summary>
        /// <param name="PKGeneratorName">主键生成器名称</param>
        /// <param name="DbHandle"></param>
        /// <returns></returns>
        public static IPKGenerator GetPKGenerator(string PKGeneratorName, IDataBaseHandler DbHandle)
        {
            if (String.IsNullOrEmpty(PKGeneratorName))
            {
                throw new ArgumentNullException("PKGeneratorName can not be empty!");
            }
            if (m_PKGTable.ContainsKey(PKGeneratorName))
            {
                IPKGenerator PKG = m_PKGTable[PKGeneratorName] as IPKGenerator;
                if (PKG != null && PKG.IsReusable)
                {
                    return(PKG);
                }
            }
            IPKGenerator NewPKG = CreatePKGenerator(PKGeneratorName, DbHandle);

            m_PKGTable[PKGeneratorName] = NewPKG;
            return(NewPKG);
        }
Пример #18
0
        /// <summary>
        /// 根据查询条件取得第一条记录的第一个字段值
        /// </summary>
        /// <param name="ReturnField"></param>
        /// <param name="Stru"></param>
        /// <param name="handler"></param>
        /// <returns></returns>
        public static object GetOneFieldBy(string ReturnField, TblStruBase Stru, IDataBaseHandler handler)
        {
            ORMContext ctx = new ORMContext(handler.DbContext.ConnectionInfo);
            IEntityHandler <TblStruBase> hand = ctx.CreateHandler <TblStruBase>(Stru, handler);

            if (!String.IsNullOrEmpty(Stru.ParameterSQL))
            {
                IDataParameter[] paras = null;
                Hashtable        hash  = Stru.__Parameters;
                if (hash != null && hash.Count > 0)
                {
                    IDataParameters dps = new DataParameters(handler.DbAdapter);
                    foreach (String key in hash)
                    {
                        dps.AddParameterValue(key, hash[key]);
                    }
                    paras = dps.Parameters;
                }
                return(hand.GetOneField(ReturnField, Stru.ParameterSQL, paras));
            }
            return(hand.GetOneField(ReturnField));
        }
Пример #19
0
        /// <summary>
        /// 构建主键生成器
        /// </summary>
        /// <param name="DbHandle"></param>
        /// <returns></returns>
        public virtual IPKGenerator CreatePKGenerator(IDataBaseHandler DbHandle)
        {
            if (String.IsNullOrEmpty(m_Mapping.Generator))
            {
                throw new MappingException("主键生成器配置为空,请检查映射文件中主键生成器的配置信息!");
            }
            IPKGenerator Generator = null;

            try
            {
                Generator = PKGeneratorFactory.GetPKGenerator(m_Mapping.Generator, DbHandle);
            }
            catch (Exception ex)
            {
                throw new MappingException("创建主键生成器失败,请检查映射文件中主键生成器的配置信息!详细信息:" + ex.ToString());
            }
            if (Generator == null)
            {
                throw new MappingException("创建主键生成器失败,主键生成器必须实现Draco.DB.ORM.PKGenerator.IPKGenerator接口,请检查映射文件中主键生成器的配置信息!");
            }
            return(Generator);
        }
 /// <summary>
 /// 构造
 /// </summary>
 /// <param name="handler"></param>
 public OleSchemaLoader(IDataBaseHandler handler)
     : base(handler)
 {
     m_Handler = handler;
 }
Пример #21
0
 /// <summary>
 /// 构造
 /// </summary>
 /// <param name="Handler"></param>
 public OleSchemaHandler(IDataBaseHandler Handler)
 {
     m_DBHandler     = Handler;
     m_ConnectString = Handler.DbContext.ConnectionInfo.ConnectionString;
 }
 public ProductController(IDataBaseHandler dataBaseHandler)
 {
     _dataBaseHandler = dataBaseHandler;
 }
Пример #23
0
        /// <summary>
        /// 根据表结构文档生成协调此连接下表结构Sql语句
        /// </summary>
        /// <returns></returns>
        public string GetFixTableStuSqlByFile(IDataBaseHandler handler)
        {
            for (int i = 0; i < this.List.Count; i++)
            {
                Table tbl = (Table)this.List[i];
                List <DataTableColumn> dtcl = tbl.Columns;
                for (int j = 0; j < dtcl.Count; j++)
                {
                    DataTableColumn dtc = dtcl[j];
                    //映射到当前的数据库类型下
                    handler.DbAdapter.GetSchemaHandler(handler).MapDBType(ref dtc);
                }
            }

            int NotExist = 0;
            int NotMatch = 0;

            System.Text.StringBuilder sbSql = new System.Text.StringBuilder(); //要执行的Sql
            ArrayList tblList   = new ArrayList();                             //不存在的表信息
            ArrayList BuildList = new ArrayList();                             //不存在的表名

            #region 对比表结构
            foreach (Table tbl in this.List)
            {
                #region 从数据库表中取得信息
                string chetblExist = null;
                chetblExist = handler.DbAdapter.GetSchemaHandler(handler).GetSqlOfTableInfo(tbl.TableName);
                object existflag = handler.ExecuteScalar(chetblExist);
                if (existflag == null || existflag == DBNull.Value || Convert.ToInt32(existflag) == 0)
                {//表不存在
                    tblList.Add(tbl);
                    BuildList.Add(tbl.TableName);
                    continue;
                }
                //数据库表结构信息
                TableSchemaInOut tsio = new TableSchemaInOut(handler);
                //数据库中的表结构信息
                Table dbtbl = tsio.getOneTableStruByTableName(tbl.TableName);
                MapTableColToDbType(ref dbtbl, handler); //转化到数据库类型

                ArrayList difflist    = new ArrayList(); //保存字段不一致的字段
                ArrayList NoExistlist = new ArrayList(); //保存字段存在的字段
                for (int i = 0; i < tbl.Columns.Count; i++)
                {
                    DataTableColumn field            = tbl.Columns[i];
                    int             j                = 0;
                    bool            IsthisFieldExist = false;//字段是否存在
                    for (; j < dbtbl.Columns.Count; j++)
                    {
                        if (String.Compare(field.ColumnName, dbtbl.Columns[j].ColumnName, true) == 0)
                        {
                            IsthisFieldExist = true;
                            //添加到不一样的字段
                            if (field.SimpleType != dbtbl.Columns[j].SimpleType || field.Length != dbtbl.Columns[j].Length)
                            //当字段类型不匹配
                            {
                                difflist.Add(field);
                            }
                            break;
                        }
                    }
                    //添加到不存在的
                    if (!IsthisFieldExist)
                    {
                        NoExistlist.Add(field);
                    }
                }
                #endregion

                #region 数据类型改变的字段
                NotMatch = difflist.Count;
                if (difflist.Count > 0)
                {
                    foreach (DataTableColumn field in difflist)
                    {
                        sbSql.Append(handler.DbAdapter.GetSchemaHandler(handler).GetAlterSqlOfColumnInfo(field));
                        sbSql.Append(ExecuteSqlFile.SqlSplitChars);
                    }
                }
                #endregion

                #region 新添加的字段
                NotExist = NoExistlist.Count;
                if (NoExistlist.Count > 0)
                {
                    foreach (DataTableColumn field in NoExistlist)
                    {
                        sbSql.Append(handler.DbAdapter.GetSchemaHandler(handler).GetAlterAddSqlOfColumnInfo(field));
                        sbSql.Append(ExecuteSqlFile.SqlSplitChars);
                    }
                }
                #endregion
            }
            #endregion

            #region  存在的表
            if (BuildList.Count > 0)
            {
                sbSql.Append(handler.DbAdapter.GetSchemaHandler(handler).GetDbServerScript(tblList));
            }
            #endregion
            return(sbSql.ToString());
        }
Пример #24
0
 /// <summary>
 /// 获取数据库构架信息操作接口类型
 /// </summary>
 /// <param name="Handler"></param>
 /// <returns></returns>
 public abstract IDataBaseSchemaHandler GetSchemaHandler(IDataBaseHandler Handler);
Пример #25
0
        /// <summary>
        /// 根据关键字(ID)集合得到数据对象集合
        /// </summary>
        /// <param name="entiType"></param>
        /// <param name="tableName"></param>
        /// <param name="Keys"></param>
        /// <param name="handler"></param>
        /// <returns></returns>
        protected static ArrayList GetEntitiesByKeys(Type entiType, String tableName, int[] Keys, IDataBaseHandler handler)
        {
            if (Keys == null || Keys.Length == 0)
            {
                return(null);
            }
            String sql = "select * from " + tableName + " where ID0 in(";

            foreach (int i in Keys)
            {
                sql += i + ",";
            }
            sql  = sql.Substring(0, sql.Length - 1);
            sql += ")";
            DataSet           ds    = handler.ExecuteQuery(sql);
            List <EntityBase> list  = DataLoader.LoadEntity <EntityBase>(ds, entiType);
            ArrayList         alist = new ArrayList();

            alist.AddRange(list);
            return(alist);
        }/// <summary>
 /// <summary>
 /// 构造
 /// </summary>
 /// <param name="Handler"></param>
 public SqlCeSchemaLoader(IDataBaseHandler Handler)
     : base(Handler)
 {
     m_Provider = Handler;
 }
Пример #27
0
 /// <summary>
 /// 创建ISchemaLoader对象
 /// </summary>
 /// <param name="handler"></param>
 /// <returns></returns>
 public ISchemaLoader GetSchemaLoader(IDataBaseHandler handler)
 {
     return(new SqlSchemaLoader(handler));
 }
Пример #28
0
 /// <summary>
 /// 构造
 /// </summary>
 /// <param name="Handler"></param>
 public SQLiteSchemaHandler(IDataBaseHandler Handler)
 {
     m_Handler = Handler;
 }
Пример #29
0
 /// <summary>
 /// 构造
 /// </summary>
 /// <param name="Handler"></param>
 public OracleSchemaHandler(IDataBaseHandler Handler)
 {
     m_DBHelper = Handler;
 }
Пример #30
0
 /// <summary>
 /// 获取IDataBaseSchemaHandler
 /// </summary>
 /// <param name="Handler"></param>
 /// <returns></returns>
 public override IDataBaseSchemaHandler GetSchemaHandler(IDataBaseHandler Handler)
 {
     return(new OracleSchemaHandler(Handler));
 }