コード例 #1
0
        private TableDef GetTD_MySQL(string table)
        {
            string       query    = "SELECT COLUMN_NAME As field,ORDINAL_POSITION as ordinal, IS_NULLABLE, DATA_TYPE as DataType, CHARACTER_MAXIMUM_LENGTH as data_length,COLUMN_KEY as is_index,COLUMN_COMMENT as description,EXTRA\r\n\t\t\t\t\t\t\tFROM INFORMATION_SCHEMA.COLUMNS\r\n\t\t\t\t\t\t\twhere table_name = @name and table_schema = @schema group by COLUMN_NAME";
            DbCommand    cmd      = (DbCommand)null;
            DbDataReader reader   = (DbDataReader)null;
            TableDef     tableDef = new TableDef();

            tableDef.Name = table;
            List <FieldDef> fieldDefList = new List <FieldDef>();

            try
            {
                cmd = DBConnectionFactory.GetMySqlCommand(query, this._dbconn);
                DBTools.AddDbParameter(ref cmd, "@name", (object)table);
                DBTools.AddDbParameter(ref cmd, "@schema", (object)this._dbconn.Database);
                reader = cmd.ExecuteReader();
                while (reader.Read())
                {
                    FieldDef fieldDef = new FieldDef();
                    fieldDef.Name        = DBTools.GetDBStringValue(reader, "field");
                    fieldDef.FieldLength = DBTools.GetDBIntValue(reader, "data_length");
                    string dbStringValue = DBTools.GetDBStringValue(reader, "description");
                    fieldDef.Description = string.IsNullOrEmpty(dbStringValue) ? DBHandler.NormalizeFieldName("_" + fieldDef.Name) : dbStringValue;
                    try
                    {
                        fieldDef.DataType = DBTools.GetCSTypeFromDBType(DBTools.GetDBStringValue(reader, "DataType"), (double)fieldDef.FieldLength);
                    }
                    catch (Exception ex)
                    {
                        string message = ex.Message;
                    }
                    fieldDef.CanBeNull    = DBTools.GetDBStringValue(reader, "is_nullable") == "YES";
                    fieldDef.IsPrimaryKey = DBTools.GetDBStringValue(reader, "is_index", (string)null) == "PRI";
                    fieldDefList.Add(fieldDef);
                }
            }
            catch (DbException ex)
            {
                throw ex;
            }
            finally
            {
                reader?.Close();
                cmd?.Dispose();
            }
            tableDef.Fields = fieldDefList.ToArray();
            return(tableDef);
        }
コード例 #2
0
 private DbCommand GetDBCommand(string queryString)
 {
     if (this._driver == "MySQL")
     {
         return(DBConnectionFactory.GetMySqlCommand(queryString, this._dbconn));
     }
     if (this._driver == "PgSQL")
     {
         return(DBConnectionFactory.GetPgSqlCommand(queryString, this._dbconn));
     }
     if (this._driver == "MSSQL")
     {
         return(DBConnectionFactory.GetSqlCommand(queryString, this._dbconn));
     }
     return((DbCommand)null);
 }