【原】获取数据库(SQL SERVER 2005)的所有信息 Get all database information from SQL Server 2005 测试通过...
生活随笔
收集整理的這篇文章主要介紹了
【原】获取数据库(SQL SERVER 2005)的所有信息 Get all database information from SQL Server 2005 测试通过...
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
公司同事要交畢業論文,說是要做一個小項目交差。 開始我給這個同事SHOW 了一下 LINQ, 同事說,LINQ 看起來代碼很少(其實LINQ代碼不少,只是自己寫的那部分少了而已!數據庫生成實體的代碼很多的!),說要代碼多點的!(忽悠老師不懂唄!),我說行!我就給他推薦了CODEPLUS,CODESMITH以及DBToCode的代碼生成器,用代碼生成器生成代碼,那樣看起來代碼也多,洋氣!這位同事滿意而去!不過第二天,其想法變了,說要做個代碼生成器,且要基于數據庫的,可是其對數據庫不熟悉,我說給其寫個Oracle,可是人家更不熟悉Oracle啊!暈倒,我說救人救到底,送佛送到西!我悶頭花了半個小時寫個個獲取SQL SERVER 2005數據庫的全部信息,是全部數據庫,如今單個數據庫不是什么問題了!嘿嘿!聽起來懸乎懸乎的吧,哈哈,不蒙大家了,上代碼:
Code<%@?Page?Language="C#"?%>
<%@?Import?Namespace="System.Data"?%>
<%@?Import?Namespace="System.Data.SqlClient"?%>
<%@?Import?Namespace="?System.Collections.Generic"?%>
<!DOCTYPE?html?PUBLIC?"-//W3C//DTD?XHTML?1.0?Transitional//EN"?"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
?
<script?runat="server">
????string?connectionString?=?"Data?Source=.;Initial?Catalog=master;Persist?Security?Info=True;User?ID=sa;Password=sa";
????protected?void?Page_Load(object?sender,?EventArgs?e)
????{
????????List<string>?DatabasesNameList?=?GetDatabasesName();
????????foreach?(string?DatabaseName?in?DatabasesNameList)
????????{
????????????Response.Write("Database?Name:?");
????????????Response.Write(DatabaseName);?Response.Write("<br?/>");
????????????Response.Write("----------------------------------------------------------------------------------------------------------");?Response.Write("<br?/>");
????????????Response.Write("----------------------------------------------------------------------------------------------------------");
????????????Response.Write("<br?/>");
????????????List<string>?TablesNameslist?=?GetTablesName(DatabaseName);
????????????foreach?(string?TableName?in?TablesNameslist)
????????????{
????????????????Response.Write("Table?Name:?");
????????????????Response.Write(TableName);
????????????????Response.Write("<br?/>");
????????????????DisplayTables(TableName,?DatabaseName);
????????????????Response.Write("<br?/>");?Response.Write("<br?/>");?Response.Write("<br?/>");
????????????}
????????????Response.Write("<br?/>");?Response.Write("<br?/>");?Response.Write("<br?/>");
????????}
????}
????void?DisplayTables(string?tablename,?string?databasename)
????{
????????string?connectionString?=?GetDatabaseConnectionString(databasename);
????????string?Query?=?"SELECT?*?FROM?["?+?tablename?+?"]";
????????SqlConnection?conn?=?new?SqlConnection(connectionString);
????????SqlDataAdapter?sda?=?new?SqlDataAdapter(Query,?conn);
????????conn.Open();
????????DataSet?ds?=?new?DataSet();
????????sda.Fill(ds,?tablename);
????????DataTable?tblSchema?=?ds.Tables[tablename];
????????conn.Close();
?
????????Response.Write("Column?Name?------???Data?Type?------?Unique?------?Auto?Increment?------?Allow?DBNull");
????????Response.Write("<br?/>");
?
????????foreach?(DataColumn?dc?in?tblSchema.Columns)
????????{
????????????string?DatabaseInfo?=?dc.ColumnName?+?"------"?+?dc.DataType?+?"------"?+?dc.Unique?+?"------"?+?dc.AutoIncrement?+?"------"?+?dc.AllowDBNull;
????????????Response.Write(DatabaseInfo);
????????????Response.Write("<br?/>");
????????}
????}
?
????string?GetDatabaseConnectionString(string?DatabaseName)
????{
????????string?Res?=?"Data?Source=.;Initial?Catalog?=?DatabaseName?;Persist?Security?Info=True;User?ID=sa;Password=sa";
????????Res?=?Res.Replace("DatabaseName",?DatabaseName);
????????return?Res;
????}
?
????List<string>?GetTablesName(string?DatabaseName)
????{
????????string?connectionString?=?GetDatabaseConnectionString(DatabaseName);
????????DataTable?tables?=?new?DataTable();
????????using?(SqlConnection?connection?=?new?SqlConnection(connectionString))
????????{
????????????SqlCommand?command?=?connection.CreateCommand();
????????????command.CommandText?=?"select?table_name?as?Name?from?INFORMATION_SCHEMA.Tables?where?TABLE_TYPE?=?'BASE?TABLE'";
????????????connection.Open();
????????????tables.Load(command.ExecuteReader(CommandBehavior.CloseConnection));
????????}
????????List<string>?list?=?new?List<string>();
????????foreach?(DataRow?row?in?tables.Rows)
????????{
????????????list.Add(row[0].ToString());
????????}
????????return?list;
????}
?
?
????List<string>?GetDatabasesName()
????{
????????DataTable?tables?=?new?DataTable();
????????using?(SqlConnection?connection?=?new?SqlConnection(connectionString))
????????{
????????????SqlCommand?command?=?connection.CreateCommand();
????????????command.CommandText?=?"select?name?from?master..sysdatabases";
????????????connection.Open();
????????????tables.Load(command.ExecuteReader(CommandBehavior.CloseConnection));
????????}
????????List<string>?list?=?new?List<string>();
????????foreach?(DataRow?row?in?tables.Rows)
????????{
????????????list.Add(row[0].ToString());
????????}
????????//?We?can?not?visit?the?system?databases
????????list.Remove("msdb");
????????list.Remove("master");
????????list.Remove("tempdb");
????????list.Remove("model");
????????list.Remove("ReportServer");
????????list.Remove("ReportServerTempDB");
????????list.Remove("aspnetdb");
?
????????return?list;
????}???
????
????
</script>
?
<html?xmlns="http://www.w3.org/1999/xhtml">
<head?runat="server">
????<title>Visit?Database</title>
</head>
<body>
????<form?id="form1"?runat="server">
????</form>
</body>
</html>
總結
以上是生活随笔為你收集整理的【原】获取数据库(SQL SERVER 2005)的所有信息 Get all database information from SQL Server 2005 测试通过...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 串口(SATA)硬盘如何使用GHOST
- 下一篇: 雾里看花