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(); } }
/// <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); }
/// <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); } }
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; }
/// <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); }
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); }
/// <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); }
/// <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)); } }
/// <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)); }
/// <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)); } }
/// <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); }
/// <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); }
/// <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)); }
/// <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; }
/// <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; }
/// <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()); }
/// <summary> /// 获取数据库构架信息操作接口类型 /// </summary> /// <param name="Handler"></param> /// <returns></returns> public abstract IDataBaseSchemaHandler GetSchemaHandler(IDataBaseHandler Handler);
/// <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; }
/// <summary> /// 创建ISchemaLoader对象 /// </summary> /// <param name="handler"></param> /// <returns></returns> public ISchemaLoader GetSchemaLoader(IDataBaseHandler handler) { return(new SqlSchemaLoader(handler)); }
/// <summary> /// 构造 /// </summary> /// <param name="Handler"></param> public SQLiteSchemaHandler(IDataBaseHandler Handler) { m_Handler = Handler; }
/// <summary> /// 构造 /// </summary> /// <param name="Handler"></param> public OracleSchemaHandler(IDataBaseHandler Handler) { m_DBHelper = Handler; }
/// <summary> /// 获取IDataBaseSchemaHandler /// </summary> /// <param name="Handler"></param> /// <returns></returns> public override IDataBaseSchemaHandler GetSchemaHandler(IDataBaseHandler Handler) { return(new OracleSchemaHandler(Handler)); }