Esempio n. 1
0
        /// <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);
        }
Esempio n. 2
0
        /// <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; }, ","));
        }
Esempio n. 3
0
        /// <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; }, ","));
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
        /// <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(); }, ","));
        }
Esempio n. 7
0
        /// <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"));
        }
Esempio n. 8
0
 /// <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; }, ","));
 }
Esempio n. 9
0
 /// <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(); }, ","));
 }
Esempio n. 10
0
 /// <summary>
 /// 得到所有非主键列
 /// </summary>
 /// <param name="columns"></param>
 /// <returns></returns>
 public static ColumnMeta GetPrimaryKeyColumn(ColumnMetaCollection columns)
 {
     return(columns.Where((col) => { return col.IsKey; }).FirstOrDefault());
 }
Esempio n. 11
0
 /// <summary>
 /// 得到所有非主键列
 /// </summary>
 /// <param name="columns"></param>
 /// <returns></returns>
 public static ColumnMetaCollection GetPrimaryKeyColumns(ColumnMetaCollection columns)
 {
     return(new ColumnMetaCollection(columns.Where((col) => { return col.IsKey; })));
 }
Esempio n. 12
0
 /// <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"));
 }
Esempio n. 13
0
 /// <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"));
 }
Esempio n. 14
0
 /// <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; }, ","));
 }
Esempio n. 15
0
 /// <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 + "`"; }, ","));
 }