public ObjectEntity(Sqler sqler, string tableName) { this.db = sqler.DbProvider; this.cond = new Conditions <T>(this); this.seq = new Sequencer <T>(this); this.SqlHelper = new EntityHelper(this.db, typeof(T), tableName); this.sqler = sqler; }
List <T> ISqler.Execute <T>(string sqlText, params object[] paramers) { EntityHelper sqlHelper = new EntityHelper(this.dbProvider, typeof(T)); var list = new List <T>(); ISqler sqler = this; sqler.Execute <T>(sqlText, r => list.Add(r), paramers); return(list); }
void ExecuteNonQuery(CSV.Log log, ISqler sqler, string sb) { try { sqler.ExecuteNonQuery(sb.ToString()); } catch (Exception ex) { log.Error(ex.Message); } }
System.Data.DataTable IGrouper <T> .Query() { var sb = new StringBuilder(); var agrs = this.Format(sb); this.seq.FormatSqlText(sb); ISqler sqer = this.sqler; this.script = Script.Create(sb.ToString(), agrs); return(sqer.ExecuteTable(this.script.Text, this.script.Arguments)); }
void IGrouper <T> .Query(DataReader <T> reader) { var sb = new StringBuilder(); var agrs = this.Format(sb); this.seq.FormatSqlText(sb); ISqler sqer = this.sqler; this.script = Script.Create(sb.ToString(), agrs); sqer.Execute <T>(this.script.Text, reader, this.script.Arguments); }
T IGrouper <T> .Single() { var sb = new StringBuilder(); var agrs = this.Format(sb); this.seq.FormatSqlText(sb); ISqler sqer = this.sqler; this.script = Script.Create(sb.ToString(), agrs); return(sqer.ExecuteSingle <T>(this.script.Text, this.script.Arguments)); }
public override bool?Check(string name, string field, ISqler sqler) { var bc = false; sqler.Execute(System.String.Format("PRAGMA table_info([{0}])", name), dr => { while (dr.Read()) { bc = System.String.Equals(dr["name"] as string, field, StringComparison.CurrentCultureIgnoreCase); if (bc) { return; } } }); return(bc); }
//int[] ISqler.ExecuteNonQuery(System.Predicate<int> predicate, System.Action<Script> action) //{ // var list = new List<int>(); // this.Command(cmd => // { // this.script = Script.Create(String.Empty, new object[0]); // var count = -1; // while (predicate(count)) // { // action(this.script); // if (String.IsNullOrEmpty(this.script.Text)) // { // break; // } // else // { // cmd.Parameters.Clear(); // cmd.CommandText = SqlParamer.Format(this.dbProvider, this.isAutoPfx, cmd, this.script.Text, this.script.Arguments); // count = cmd.ExecuteNonQuery(); // list.Add(count); // this.script.Reset(String.Empty); // } // } // return 0; // }); // return list.ToArray(); //} #endregion #region ISqler Members int[] ISqler.ExecuteNonQuery(params Script[] scripts) { var l = -1; ISqler d = this; var list = new List <int>(); d.Execute(sc => { if (l < scripts.Length) { sc.Reset(scripts[l].Text, scripts[l].Arguments); return(true); } return(false); }, cmd => list.Add(cmd.ExecuteNonQuery())); return(list.ToArray()); }
public Inserter(Sqler sqler) { this.dbProvider = sqler.DbProvider; this.sqler = sqler; }
void CreateTable(ISqler sqler, DbProvider provider, CSV.Log log, Object key, object value) { var tabName = key.GetType().Name; log.Info("创建表", tabName); var keys = CBO.GetProperty(key); IDictionary <string, object> textKeys = new Dictionary <string, object>(); if (value != null) { if (value.GetType().IsArray == false) { textKeys = CBO.GetProperty(value); } } var Delimiter = provider.Delimiter; //var provider = sqler.DbProvider; var builder = provider.Builder; if (String.IsNullOrEmpty(Delimiter)) { tabName = String.Format("{0}{3}{2}", provider.QuotePrefix, provider.Prefixion, provider.QuoteSuffix, tabName); } else { if (String.IsNullOrEmpty(provider.Prefixion)) { tabName = String.Format("{0}{1}{2}", provider.QuotePrefix, tabName, provider.QuoteSuffix); } else { switch (Delimiter) { case ".": tabName = String.Format("{0}{1}{2}.{0}{3}{2}", provider.QuotePrefix, provider.Prefixion, provider.QuoteSuffix, tabName); break; default: tabName = String.Format("{0}{1}{4}{3}{2}", provider.QuotePrefix, provider.Prefixion, provider.QuoteSuffix, tabName, Delimiter); break; } } } var sb = new StringBuilder(); sb.Append("CREATE TABLE "); sb.Append(tabName); sb.Append("("); var ps = key.GetType().GetProperties(); foreach (var property in ps) { var filed = String.Format("{0}{2}{1} ", provider.QuotePrefix, provider.QuoteSuffix, property.Name); sb.Append(builder.Column(filed)); var type = property.PropertyType; if (type.IsGenericType) { type = type.GetGenericArguments()[0]; } switch (type.FullName) { case "System.SByte": case "System.Byte": case "System.Int16": case "System.UInt16": case "System.Int32": case "System.UInt32": sb.Append(builder.Integer()); break; case "System.Double": case "System.Single": sb.Append(builder.Float()); break; case "System.Int64": case "System.UInt64": case "System.Decimal": sb.Append(builder.Number()); break; case "System.Boolean": sb.Append(builder.Boolean()); break; case "System.DateTime": sb.Append(builder.Date()); break; case "System.Guid": sb.Append(builder.Guid()); break; default: if (property.PropertyType.IsEnum) { sb.Append(builder.Integer()); } else { if (textKeys.ContainsKey(property.Name)) { sb.Append(builder.Text()); } else { sb.Append(builder.String()); } } break; } if (keys.ContainsKey(property.Name)) { sb.Append(" NOT NULL"); } sb.Append(","); } if (value != null) { if (value.GetType().IsArray) { var fs = (string[])value; foreach (var f in fs) { var filed = String.Format("{0}{2}{1} ", provider.QuotePrefix, provider.QuoteSuffix, f); sb.Append(builder.Column(filed)); sb.Append(builder.String()); sb.Append(","); } } } sb.Remove(sb.Length - 1, 1); sb.Append(")"); try { sqler.ExecuteNonQuery(sb.ToString()); } catch (Exception ex) { log.Error(ex.Message); } if (keys.Count > 0) { var ids = new List <String>(); var m = keys.GetEnumerator(); while (m.MoveNext()) { var filed = String.Format("{0}{1}{2}", provider.QuotePrefix, m.Current.Key, provider.QuoteSuffix); ids.Add(filed); } var sql = builder.PrimaryKey(tabName, ids.ToArray()); if (String.IsNullOrEmpty(sql) == false) { try { sqler.ExecuteNonQuery(sql); } catch (Exception ex) { log.Error("创建主键" + String.Join(",", ids.ToArray()), ex.Message); } } } }
void CheckTable(ISqler sqler, DbProvider provider, CSV.Log log, Object key, object value) { var tabName = key.GetType().Name; log.Info("检测表", tabName); var keys = CBO.GetProperty(key); IDictionary <string, object> textKeys = new Dictionary <string, object>(); if (value != null) { if (value.GetType().IsArray == false) { textKeys = CBO.GetProperty(value); } } var builder = provider.Builder; tabName = GetName(provider, tabName); if (builder.Check(tabName.Replace(provider.QuotePrefix, "").Replace(provider.QuoteSuffix, ""), sqler) == false) { CreateTable(sqler, provider, log, key, value); } else { var ps = key.GetType().GetProperties(); foreach (var property in ps) { var filed = String.Format("{0}{2}{1} ", provider.QuotePrefix, provider.QuoteSuffix, property.Name); var cfiled = builder.Column(filed); if (builder.Check(tabName.Replace(provider.QuotePrefix, "").Replace(provider.QuoteSuffix, "").Trim(), cfiled.Replace(provider.QuotePrefix, "").Replace(provider.QuoteSuffix, "").Trim(), sqler) == false) { var sb = new StringBuilder(); var type = property.PropertyType; if (type.IsGenericType) { type = type.GetGenericArguments()[0]; } switch (type.FullName) { case "System.SByte": case "System.Byte": case "System.Int16": case "System.UInt16": case "System.Int32": case "System.UInt32": sb.Append(builder.AddColumn(tabName, cfiled, builder.Integer())); break; case "System.Double": case "System.Single": sb.Append(builder.AddColumn(tabName, cfiled, builder.Float())); break; case "System.Int64": case "System.UInt64": case "System.Decimal": sb.Append(builder.AddColumn(tabName, cfiled, builder.Number())); break; case "System.Boolean": sb.Append(builder.AddColumn(tabName, cfiled, builder.Boolean())); break; case "System.DateTime": sb.Append(builder.AddColumn(tabName, cfiled, builder.Date())); break; case "System.Guid": sb.Append(builder.AddColumn(tabName, cfiled, builder.Guid())); break; default: if (property.PropertyType.IsEnum) { sb.Append(builder.AddColumn(tabName, cfiled, builder.Integer())); } else { if (textKeys.ContainsKey(property.Name)) { sb.Append(builder.AddColumn(tabName, cfiled, builder.Text())); } else { sb.Append(builder.AddColumn(tabName, cfiled, builder.String())); } } break; } if (sb.Length > 0) { log.Info("追加表字段", tabName + '.' + cfiled); ExecuteNonQuery(log, sqler, sb.ToString()); } } } if (value != null) { if (value.GetType().IsArray) { var fs = (string[])value; foreach (var f in fs) { var filed = builder.Column(String.Format("{0}{2}{1} ", provider.QuotePrefix, provider.QuoteSuffix, f)); if (builder.Check(tabName.Replace(provider.QuotePrefix, "").Replace(provider.QuoteSuffix, "").Trim(), filed.Replace(provider.QuotePrefix, "").Replace(provider.QuoteSuffix, "").Trim(), sqler) == false) { log.Info("追加表字段", tabName + '.' + filed); ExecuteNonQuery(log, sqler, builder.AddColumn(tabName, filed, builder.String())); } } } } } }
public override bool?Check(string name, ISqler sqler) { return(Convert.ToInt32(sqler.ExecuteScalar("SELECT COUNT(*) FROM USER_OBJECTS WHERE TABLE_NAME = {0}", name)) > 0); }
public override bool?Check(string name, string field, ISqler sqler) { return(Convert.ToInt32(sqler.ExecuteScalar("SELECT COUNT(*) FROM USER_TAB_COLUMNS WHERE TABLE_NAME = {0} AND COLUMN_NAME = {1}", name, field)) > 0); }
public override bool?Check(string name, ISqler sqler) { int m = Convert.ToInt32(sqler.ExecuteScalar("select count(*) from sys.objects where object_id=object_id({0})", name)); return(m > 0); }
public override bool?Check(string name, ISqler sqler) { int m = Convert.ToInt32(sqler.ExecuteScalar("select count(*) from information_schema.tables where table_name = {0}", name)); return(m > 0); }
public override bool?Check(string name, string field, ISqler sqler) { int m = Convert.ToInt32(sqler.ExecuteScalar("select count(*) from information_schema.columns where table_name = {0} and column_name = {1}", name, field)); return(m > 0); }
/// <summary> /// 检测表名 /// </summary> /// <param name="name"></param> /// <param name="sqler"></param> /// <returns></returns> public virtual bool?Check(string name, ISqler sqler) { return(null); }
public override bool?Check(string name, string field, ISqler sqler) { int m = Convert.ToInt32(sqler.ExecuteScalar("select count(*) from sys.columns where object_id=object_id({0}) AND name={1}", name, field)); return(m > 0); }
public override bool?Check(string name, ISqler sqler) { int m = Convert.ToInt32(sqler.ExecuteScalar("select count(*) from sqlite_master where type ={1} and name = {0}", name, "table")); return(m > 0); }