/// <summary> /// 得到表及元数据 /// </summary> /// <param name="connectString"></param> /// <param name="?"></param> /// <returns></returns> public static Dictionary <string, ColumnMetaCollection> GetTableMeta(string connectString, string[] filterTables, bool onlyTable) { //读取表原数据 T4DB db = new T4DB(connectString); string[] tables = db.GetTables(); Dictionary <string, ColumnMetaCollection> tableDirect = new Dictionary <string, ColumnMetaCollection>(); for (int i = 0; i < tables.Length; i++) { bool has = filterTables.Has(tables[i]); if (onlyTable) { if (has) { ColumnMetaCollection metas = db.GetTableSchema(tables[i]); tableDirect.Add(tables[i], metas); } } else { if (!has) { ColumnMetaCollection metas = db.GetTableSchema(tables[i]); tableDirect.Add(tables[i], metas); } } } return(tableDirect); }
/// <summary> /// 创建插入SQL实参列表 /// </summary> /// <param name="columns"></param> /// <param name="hasPrimaryKey">是否包含主键</param> /// <returns></returns> public string InsertArgumentList(bool hasKey) { ColumnMetaCollection collection = this.CurrentTable.Columns; if (!hasKey) { collection = collection.GetNoKeyCollection(); } return(collection.Concat((col) => { return "@" + col.ColumnName; }, ",")); }
/// <summary> /// 创建实参列表 /// </summary> /// <param name="columns"></param> /// <param name="hasPrimaryKey">是否包含主键</param> /// <returns></returns> public string MethodArgumentList(string tableName, bool hasKey) { ColumnMetaCollection collection = this.CurrentTable.Columns; if (!hasKey) { collection = collection.GetNoKeyCollection(); } return(collection.Concat((col) => { return tableName.ToLower() + "." + col.ColumnName; }, ",")); }
public ColumnMetaCollection GetTableSchema(string table) { Dictionary <string, string> comments = GetColumnComment(table); ColumnMetaCollection metas = new ColumnMetaCollection(); MySqlConnection connection = new MySqlConnection(this.ConnectionString); connection.Open(); MySqlCommand cmd = new MySqlCommand("select * from " + table + " limit 0,1", connection); using (MySqlDataReader ddr = cmd.ExecuteReader(CommandBehavior.KeyInfo | CommandBehavior.CloseConnection)) { if (ddr != null && !ddr.IsClosed) { //得元数据 DataTable dt = ddr.GetSchemaTable(); for (int i = 0, len = dt.Rows.Count; i < len; i++) { ColumnMeta columnMeta = new ColumnMeta(); columnMeta.ColumnName = dt.Rows[i][0].ToString(); columnMeta.ColumnOridinal = TypeConverter.ObjectToInt(dt.Rows[i][1], 0); columnMeta.ColumnSize = TypeConverter.ObjectToInt(dt.Rows[i][2], 4); columnMeta.IsUnique = TypeConverter.ObjectToBool(dt.Rows[i][5], false); columnMeta.IsKey = TypeConverter.ObjectToBool(dt.Rows[i][6], false); columnMeta.FieldType = (Type)dt.Rows[i][11]; columnMeta.FieldTypeName = columnMeta.FieldType.Name; columnMeta.AllowDBNull = TypeConverter.ObjectToBool(dt.Rows[i][12], true); if (comments.ContainsKey(columnMeta.ColumnName)) { columnMeta.Comment = comments[columnMeta.ColumnName]; if (!string.IsNullOrEmpty(columnMeta.Comment)) { columnMeta.Comment = columnMeta.Comment.Replace("\r", "").Replace("\n", ""); } } if (dt.Rows[i][0].ToString().IndexOf(" ") > -1) { continue; } metas.Add(columnMeta); } } } connection.Close(); return(metas); }
public ColumnMetaCollection GetTableSchema(string table) { ColumnMetaCollection metas = new ColumnMetaCollection(); SqlConnection connection = new SqlConnection(this.ConnectionString); connection.Open(); SqlCommand cmd = new SqlCommand("select * from " + table, connection); using (SqlDataReader ddr = cmd.ExecuteReader(CommandBehavior.KeyInfo)) { if (ddr != null && !ddr.IsClosed) { //得元数据 DataTable dt = ddr.GetSchemaTable(); //StringBuilder builder = new StringBuilder(); for (int i = 0, len = dt.Rows.Count; i < len; i++) { //for (int offset = 0; offset < dt.Columns.Count; offset++) //{ // builder.AppendLine(dt.Columns[offset].ColumnName+"=>(index:"+offset+")=>"+dt.Rows[i][offset]); //} ColumnMeta columnMeta = new ColumnMeta(); columnMeta.ColumnName = dt.Rows[i][0].ToString(); columnMeta.ColumnOridinal = TypeConverter.ObjectToInt(dt.Rows[i][1], 0); columnMeta.ColumnSize = TypeConverter.ObjectToInt(dt.Rows[i][2], 4); columnMeta.IsUnique = TypeConverter.ObjectToBool(dt.Rows[i][5], false); columnMeta.IsKey = TypeConverter.ObjectToBool(dt.Rows[i][6], false); columnMeta.FieldTypeName = ((Type)dt.Rows[i][12]).Name; columnMeta.FieldType = (Type)dt.Rows[i][12]; columnMeta.AllowDBNull = TypeConverter.ObjectToBool(dt.Rows[i][13], true); if (dt.Rows[i][0].ToString().IndexOf(" ") > -1) { continue; } metas.Add(columnMeta); } //File.WriteAllText("d:\\struct.txt", builder.ToString()); } } return(metas); }
/// <summary> /// 创建形参列表 /// </summary> /// <param name="columns">列</param> /// <param name="hasPrimaryKey">是否包含主键</param> /// <returns></returns> public string MethodParameterList(bool hasKey) { ColumnMetaCollection collection = this.CurrentTable.Columns; if (!hasKey) { collection = collection.GetNoKeyCollection(); } return(collection.Concat((col) => { return col.FieldTypeName + " " + col.ColumnName.ToLower(); }, ",")); }
/// <summary> /// 创建DBparameter列表 /// </summary> /// <param name="DbHelperInstanceName"></param> /// <param name="columns"></param> /// <param name="hasPrimaryKey"></param> /// <returns></returns> public string CreateDbParameterList(string DbHelperInstanceName, string varName, bool hasKey) { ColumnMetaCollection collection = this.CurrentTable.Columns; if (!hasKey) { collection = collection.GetNoKeyCollection(); } return(collection.Concat((col) => { return CreateDbParameter(DbHelperInstanceName, varName, col); }, ",\r\n\t\t\t\t")); }
/// <summary> /// 创建实参列表 /// </summary> /// <param name="columns"></param> /// <param name="hasPrimaryKey">是否包含主键</param> /// <returns></returns> public static string CreateMethodArgumentList(string tableName, ColumnMetaCollection columns) { return(columns.Concat((col) => { return tableName.ToLower() + "." + col.ColumnName; }, ",")); }
/// <summary> /// 创建形参列表 /// </summary> /// <param name="columns">列</param> /// <param name="hasPrimaryKey">是否包含主键</param> /// <returns></returns> public static string CreateMethodParameterList(ColumnMetaCollection columns) { return(columns.Concat((col) => { return col.FieldTypeName + " " + col.ColumnName.ToLower(); }, ",")); }
/// <summary> /// 得到所有非主键列 /// </summary> /// <param name="columns"></param> /// <returns></returns> public static ColumnMeta GetPrimaryKeyColumn(ColumnMetaCollection columns) { return(columns.Where((col) => { return col.IsKey; }).FirstOrDefault()); }
/// <summary> /// 得到所有非主键列 /// </summary> /// <param name="columns"></param> /// <returns></returns> public static ColumnMetaCollection GetPrimaryKeyColumns(ColumnMetaCollection columns) { return(new ColumnMetaCollection(columns.Where((col) => { return col.IsKey; }))); }
/// <summary> /// 拼Where /// </summary> /// <param name="columns"></param> /// <returns></returns> public static string CreateSqlWhere(ColumnMetaCollection columns) { return(columns.Concat((col) => { return " `" + col.ColumnName + "`=@" + col.ColumnName; }, "and")); }
/// <summary> /// 创建DBparameter列表 /// </summary> /// <param name="DbHelperInstanceName"></param> /// <param name="columns"></param> /// <param name="hasPrimaryKey"></param> /// <returns></returns> public static string CreateDbParameterList(string DbHelperInstanceName, string tableName, ColumnMetaCollection columns) { //ZTDB.Instance .MakeInParam ("@#item.ColumnName#",DbType .#item.FieldTypeName#,#item.ColumnSize#,#tolower(item.ColumnName)# )<ad:if test="#notequals(i,fields.Count)#">, return(columns.Concat((col) => { return CreateDbParameter(DbHelperInstanceName, tableName, col); }, ",\r\n\t\t\t\t")); }
/// <summary> /// 创建Update语句参数列表 /// </summary> /// <param name="columns"></param> /// <param name="hasPrimaryKey">是否包含主键</param> /// <returns></returns> public static string CreateUpdateArgumentList(ColumnMetaCollection columns) { return(columns.Concat((col) => { return col.ColumnName + "=@" + col.ColumnName; }, ",")); }
/// <summary> /// 创建插入SQL形参列表 /// </summary> /// <param name="columns">列</param> /// <param name="hasPrimaryKey">是否包含主键</param> /// <returns></returns> public static string CreateInsertParameterList(ColumnMetaCollection columns) { return(columns.Concat((col) => { return "`" + col.ColumnName + "`"; }, ",")); }