• 研究代码生成器~得到数据库中的表的结构和字段名称


    一。Sql 2000得到表字段详细信息。
    SELECT
    colorder=a.colorder,--列号
    ColumnName=a.name,  --列名称
    TypeName=b.name,    --列类型
    Length=(case when b.name='nvarchar' then a.length/2 else a.length end), --列长度
    Preci=COLUMNPROPERTY(a.id,a.name,'PRECISION'),   --列精度
    Scale=isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0), --刻度
    IsIdentity=case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then '√'else '' end, --是否自动增长
    isPK=case when exists(SELECT 1 FROM sysobjects where xtype='PK' and name in (
    SELECT name FROM sysindexes WHERE indid in(
    SELECT indid FROM sysindexkeys WHERE id = a.id AND colid=a.colid
    ))) then '√' else '' end,                                                            --是否是主键
    cisNull=case when a.isnullable=1 then '√'else '' end, --是否允许为空
    defaultVal=isnull(e.text,''), --默认值
    deText=isnull(g.[value],'')   --注释文字
    FROM syscolumns a
    left join systypes b on a.xusertype=b.xusertype
    inner join sysobjects d on a.id=d.id  and (d.xtype='U' or d.xtype='V') and  d.name<>'dtproperties'
    left join syscomments e on a.cdefault=e.id
    left join sysproperties g on a.id=g.id and a.colid=g.smallid
    where d.name='OrderLog'   --这里是表的名称
    order by a.id,a.colorder

    二。Sql2005得到表字段详细信息。
    SELECT
    colorder=C.column_id,
    ColumnName=C.name,
    TypeName=T.name,
    Length=C.max_length,
    Preci=C.precision,
    Scale=C.scale,
    IsIdentity=CASE WHEN C.is_identity=1 THEN N'\u221a'ELSE N'' END,
    isPK=ISNULL(IDX.PrimaryKey,N''),
    Computed=CASE WHEN C.is_computed=1 THEN N'\u221a'ELSE N'' END,
    IndexName=ISNULL(IDX.IndexName,N''),
    IndexSort=ISNULL(IDX.Sort,N''),
    Create_Date=O.Create_Date,
    Modify_Date=O.Modify_date,
    cisNull=CASE WHEN C.is_nullable=1 THEN N'\u221a'ELSE N'' END,
    defaultVal=ISNULL(D.definition,N''),
    deText=ISNULL(PFD.[value],N'')
    FROM sys.columns C
    INNER JOIN sys.objects O
    ON C.[object_id]=O.[object_id]
    AND O.type='U'
    AND O.is_ms_shipped=0
    INNER JOIN sys.types T
    ON C.user_type_id=T.user_type_id
    LEFT JOIN sys.default_constraints D
    ON C.[object_id]=D.parent_object_id
    AND C.column_id=D.parent_column_id
    AND C.default_object_id=D.[object_id]
    LEFT JOIN sys.extended_properties PFD
    ON PFD.class=1 
    AND C.[object_id]=PFD.major_id 
    AND C.column_id=PFD.minor_id
    LEFT JOIN sys.extended_properties PTB
    ON PTB.class=1
    AND PTB.minor_id=0 
    AND C.[object_id]=PTB.major_id
    LEFT JOIN
    (
    SELECT 
    IDXC.[object_id],
    IDXC.column_id,
    Sort=CASE INDEXKEY_PROPERTY(IDXC.[object_id],IDXC.index_id,IDXC.index_column_id,'IsDescending')
    WHEN 1 THEN 'DESC' WHEN 0 THEN 'ASC' ELSE '' END,
    PrimaryKey=CASE WHEN IDX.is_primary_key=1 THEN N'\u221a'ELSE N'' END,
    IndexName=IDX.Name
    FROM sys.indexes IDX
    INNER JOIN sys.index_columns IDXC
    ON IDX.[object_id]=IDXC.[object_id]
    AND IDX.index_id=IDXC.index_id
    LEFT JOIN sys.key_constraints KC
    ON IDX.[object_id]=KC.[parent_object_id]
    AND IDX.index_id=KC.unique_index_id
    INNER JOIN 
    (
    SELECT [object_id], Column_id, index_id=MIN(index_id)
    FROM sys.index_columns
    GROUP BY [object_id], Column_id
    ) IDXCUQ
    ON IDXC.[object_id]=IDXCUQ.[object_id]
    AND IDXC.Column_id=IDXCUQ.Column_id
    AND IDXC.index_id=IDXCUQ.index_id
    ) IDX
    ON C.[object_id]=IDX.[object_id]
    AND C.column_id=IDX.column_id 
    WHERE O.name=N'" + TableName + "'   --这里是表的名称
    ORDER BY O.name,C.column_id 


    三。Oracle得到表字段详细信息。
    select
    COLUMN_ID as colorder, 
    COLUMN_NAME as ColumnName,
    DATA_TYPE as TypeName,
    DATA_LENGTH as Length,
    DATA_PRECISION as Preci,
    DATA_SCALE as Scale,
    '' as IsIdentity,
    '' as isPK,
    "NULLABLE as cisNull ,
    DATA_DEFAULT as defaultVal,
    '' as deText
    from USER_TAB_COLUMNS
    where TABLE_NAME='" + TableName + "'   //这里是表名称
    order by COLUMN_ID

    四。其他的数据库的表字段结构的详细。

      public DataTable GetOleDbSchemaTable(Guid schema, object[] restrictions)
      {
       DataTable table1;
       IntPtr ptr1;
       OleDbConnection.ExecutePermission.Demand();
       Bid.ScopeEnter(out ptr1, "<oledb.OleDbConnection.GetOleDbSchemaTable|API> %d#, schema=%p{GUID}, restrictions\n", this.ObjectID, schema);
       try
       {
        this.CheckStateOpen("GetOleDbSchemaTable");
        OleDbConnectionInternal internal1 = this.GetOpenConnection();
        if (OleDbSchemaGuid.DbInfoLiterals == schema)
        {
         if ((restrictions != null) && (restrictions.Length != 0))
         {
          throw ODB.InvalidRestrictionsDbInfoLiteral("restrictions");
         }
         return internal1.BuildInfoLiterals();
        }
        if (OleDbSchemaGuid.SchemaGuids == schema)
        {
         if ((restrictions != null) && (restrictions.Length != 0))
         {
          throw ODB.InvalidRestrictionsSchemaGuids("restrictions");
         }
         return internal1.BuildSchemaGuids();
        }
        if (OleDbSchemaGuid.DbInfoKeywords == schema)
        {
         if ((restrictions != null) && (restrictions.Length != 0))
         {
          throw ODB.InvalidRestrictionsDbInfoKeywords("restrictions");
         }
         return internal1.BuildInfoKeywords();
        }
        if (!internal1.SupportSchemaRowset(schema))
        {
         IDBSchemaRowsetWrapper wrapper1 = internal1.IDBSchemaRowset();
         try
         {
          if (wrapper1.Value == null)
          {
           throw ODB.SchemaRowsetsNotSupported(this.Provider);
          }
         }
         finally
         {
          wrapper1.Dispose();
         }
         throw ODB.NotSupportedSchemaTable(schema, this);
        }
        return internal1.GetSchemaRowset(schema, restrictions);
       }
       finally
       {
        Bid.ScopeLeave(ref ptr1);
       }
       return table1;
      }
      private DataTable Tab2Colum(DataTable sTable)
      {
       DataTable table1 = new DataTable();
       table1.Columns.Add("colorder");
       table1.Columns.Add("ColumnName");
       table1.Columns.Add("TypeName");
       table1.Columns.Add("Length");
       table1.Columns.Add("Preci");
       table1.Columns.Add("Scale");
       table1.Columns.Add("IsIdentity");
       table1.Columns.Add("isPK");
       table1.Columns.Add("cisNull");
       table1.Columns.Add("defaultVal");
       table1.Columns.Add("deText");
       int num1 = 0;
       foreach (DataRow row1 in sTable.Select("", "ORDINAL_POSITION asc"))
       {
        DataRow row2 = table1.NewRow();
        row2["colorder"] = row1[6].ToString();
        row2["ColumnName"] = row1[3].ToString();
        string text1 = row1[11].ToString();
        switch (row1[11].ToString())
        {
         case "3":
          text1 = "int";
          goto Label_01CE;

         case "5":
          text1 = "float";
          goto Label_01CE;

         case "6":
          text1 = "money";
          goto Label_01CE;

         case "7":
          text1 = "datetime";
          goto Label_01CE;

         case "11":
          text1 = "bool";
          break;

         case "130":
          text1 = "varchar";
          break;
        }
       Label_01CE:
        row2["TypeName"] = text1;
        row2["Length"] = row1[13].ToString();
        row2["Preci"] = row1[15].ToString();
        row2["Scale"] = row1[0x10].ToString();
        row2["IsIdentity"] = "";
        row2["isPK"] = "";
        if (row1[10].ToString().ToLower() == "true")
        {
         row2["cisNull"] = "";
        }
        else
        {
         row2["cisNull"] = "\u221a";
        }
        row2["defaultVal"] = row1[8].ToString();
        row2["deText"] = "";
        table1.Rows.Add(row2);
        num1++;
       }
       return table1;
      }

  • 相关阅读:
    银行卡号每隔四位添加一个分隔符
    clipboard.js实现文本复制
    选中|复制文本
    react---之下拉菜单默认选中的值始终不变的问题
    create-react-app支持less配置
    数对
    安置路灯
    被三整除
    牛牛找工作
    C++ std::pair
  • 原文地址:https://www.cnblogs.com/anan/p/548233.html
Copyright © 2020-2023  润新知