日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

根据mysql生成数据库设计文档,第100篇博文纪念 | C# 根据数据库表结构生成DOC数据库文档(1)...

發布時間:2024/10/8 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 根据mysql生成数据库设计文档,第100篇博文纪念 | C# 根据数据库表结构生成DOC数据库文档(1)... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

//==============================================================================作?者:農民伯伯//郵?箱:over140@gmail.com//博?客:http://over140.cnblogs.com///時?間:2009-9-9//描?述:獲取SQL?SERVER?元數據==============================================================================usingSystem;usingSystem.Collections.Generic;usingSystem.Text;usingSystem.Data;usingSystem.Data.SqlClient;usingSystem.Linq;publicsealedclassSqlSchemaProvider

{#regionConstructorpublicSqlSchemaProvider(stringconnectstring)

{

ConnectString=connectstring;

}#endregion#regionGetTableColumnspublicIListGetTableColumns(stringtableName)

{

IListresult=newList();

SqlConnectionStringBuilder?scsb=newSqlConnectionStringBuilder(ConnectString);using(SqlConnection?conn=newSqlConnection(scsb.ConnectionString))

{

conn.Open();

SqlCommand?cmd=newSqlCommand(SQL2000_GetTableColumns,?conn);

cmd.Parameters.Add(newSqlParameter("@DatabaseName",?scsb.InitialCatalog));

cmd.Parameters.Add(newSqlParameter("@SchemaName","dbo"));

cmd.Parameters.Add(newSqlParameter("@TableName",?tableName));

SqlDataReader?reader=cmd.ExecuteReader(CommandBehavior.CloseConnection);while(reader.Read())

{

result.Add(newColumnInfo()

{

Name=reader.GetString(0),

DataType=reader.GetString(1),

Length=reader.GetInt32(3),

Nullable=reader.GetString(6).Trim().Equals("YES")?true:false,

DefaultValue=reader.IsDBNull(7)?"":?reader[7].ToString(),

Identity=reader.GetInt32(8),

IdentitySeed=Convert.ToInt32(reader.GetString(12)),

IdentityIncrement=Convert.ToInt32(reader.GetString(13)),

ColumnDesc=reader.GetString(17)

});

}

reader.Close();

}returnresult;

}publicIListGetTables()

{

IListresult=newList();

SqlConnectionStringBuilder?scsb=newSqlConnectionStringBuilder(ConnectString);using(SqlConnection?conn=newSqlConnection(scsb.ConnectionString))

{

conn.Open();

SqlCommand?cmd=newSqlCommand(SQL2000_GetTables,?conn);

SqlDataReader?reader=cmd.ExecuteReader(CommandBehavior.CloseConnection);while(reader.Read())

{

result.Add(reader.GetString(0));

}

reader.Close();

}returnresult;

}#regionType?MapsprivatestringGetCSharpType(stringtype)

{if(string.IsNullOrEmpty(type))return"string";stringreval=string.Empty;switch(type.ToLower())

{case"varchar":case"nchar":case"ntext":case"text":case"char":case"nvarchar":

reval="string";break;case"int":

reval="int";break;case"smallint":

reval="Int16";break;case"bigint":

reval="Int64";break;case"float":

reval="double";break;case"bit":

reval="bool";break;case"decimal":case"smallmoney":case"money":case"numeric":

reval="decimal";break;case"binary":

reval="System.Byte[]";break;case"real":

reval="System.Single";break;case"datetime":case"smalldatetime":case"timestamp":

reval="System.DateTime";break;case"tinyint":

reval="System.Byte";break;case"uniqueidentifier":

reval="System.Guid";break;case"p_w_picpath":case"varbinary":

reval="System.Byte[]";break;case"Variant":

reval="Object";break;default:

reval="string";break;

}returnreval;

}#endregion#endregion#regionSQL?Templates#regionGetTableColumnsprivateconststringSQL2000_GetTables=@"SELECT

object_name(so.id)?AS?OBJECT_NAME,

user_name(so.uid)??AS?USER_NAME,

so.type????????????AS?TYPE,

so.crdate??????????AS?DATE_CREATED,

fg.file_group??????AS?FILE_GROUP,

so.id??????????????AS?OBJECT_ID

FROM

dbo.sysobjects?so

LEFT?JOIN?(

SELECT

s.groupname?AS?file_group,

i.id????????AS?id

FROM?dbo.sysfilegroups?s

INNER?JOIN?dbo.sysindexes?i

ON?i.groupid?=?s.groupid

WHERE?i.indid?

)?AS?fg

ON?so.id?=?fg.id

WHERE

so.type?=?N'U'

AND?permissions(so.id)?&?4096?<>?0

AND?ObjectProperty(so.id,?N'IsMSShipped')?=?0

ORDER?BY?user_name(so.uid),?object_name(so.id)";privateconststringSQL2000_GetTableColumns=@"SELECT

clmns.[name]?AS?[Name],

usrt.[name]?AS?[DataType],

ISNULL(baset.[name],?N'')?AS?[SystemType],

CAST(CASE?WHEN?baset.[name]?IN?(N'char',?N'varchar',?N'binary',?N'varbinary',?N'nchar',?N'nvarchar')?THEN?clmns.prec?ELSE?clmns.length?END?AS?INT)?AS?[Length],

CAST(clmns.xprec?AS?TINYINT)?AS?[NumericPrecision],

CAST(clmns.xscale?AS?INT)?AS?[NumericScale],

CASE?CAST(clmns.isnullable?AS?BIT)?WHEN?1?THEN?'YES'?ELSE?'NO'?END?AS?[Nullable],

defaults.text?AS?[DefaultValue],

CAST(COLUMNPROPERTY(clmns.id,?clmns.[name],?N'IsIdentity')?AS?INT)?AS?[Identity],

CAST(COLUMNPROPERTY(clmns.id,?clmns.[name],?N'IsRowGuidCol')?AS?INT)?AS?IsRowGuid,

CAST(COLUMNPROPERTY(clmns.id,?clmns.[name],?N'IsComputed')?AS?INT)?AS?IsComputed,

CAST(COLUMNPROPERTY(clmns.id,?clmns.[name],?N'IsDeterministic')?AS?INT)?AS?IsDeterministic,

CAST(CASE?COLUMNPROPERTY(clmns.id,?clmns.[name],?N'IsIdentity')?WHEN?1?THEN?IDENT_SEED(QUOTENAME(stbl.[name])?+?'.'?+?QUOTENAME(tbl.[name]))?ELSE?0?END?AS?NVARCHAR(40))?AS?[IdentitySeed],

CAST(CASE?COLUMNPROPERTY(clmns.id,?clmns.[name],?N'IsIdentity')?WHEN?1?THEN?IDENT_INCR(QUOTENAME(stbl.[name])?+?'.'?+?QUOTENAME(tbl.[name]))?ELSE?0?END?AS?NVARCHAR(40))?AS?[IdentityIncrement],

cdef.[text]?AS?ComputedDefinition,

clmns.[collation]?AS?Collation,

CAST(clmns.colid?AS?int)?AS?ObjectId,

isnull(prop.value,?'')?AS?ColumnDesc

FROM

dbo.sysobjects?AS?tbl

INNER?JOIN?dbo.sysusers?AS?stbl?ON?stbl.[uid]?=?tbl.[uid]

INNER?JOIN?dbo.syscolumns?AS?clmns?ON?clmns.id=tbl.id

LEFT?JOIN?dbo.systypes?AS?usrt?ON?usrt.xusertype?=?clmns.xusertype

LEFT?JOIN?dbo.sysusers?AS?sclmns?ON?sclmns.uid?=?usrt.uid

LEFT?JOIN?dbo.systypes?AS?baset?ON?baset.xusertype?=?clmns.xtype?and?baset.xusertype?=?baset.xtype

LEFT?JOIN?db.syscomments?AS?defaults?ON?defaults.id?=?clmns.cdefault

LEFT?JOIN?dbo.syscomments?AS?cdef?ON?cdef.id?=?clmns.id?AND?cdef.number?=?clmns.colid

LEFT?OUTER?JOIN?sysproperties?prop?ON?clmns.id?=?prop.id?AND?clmns.colid?=?prop.smallid

WHERE

(tbl.[type]?=?'U'?OR?tbl.[type]?=?'S')

AND?stbl.[name]?=?'dbo'

AND?tbl.[name]?=?@TableName

ORDER?BY

clmns.colorder";#endregion#endregion#regionPropertiespublicstringConnectString?{get;set;?}#endregion}

總結

以上是生活随笔為你收集整理的根据mysql生成数据库设计文档,第100篇博文纪念 | C# 根据数据库表结构生成DOC数据库文档(1)...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。