检索特定的数据库表目录服务器C#

寻找一些C#例子,可以从一个服务器上的特定数据库中检索表的名称。 我已经有一个有效的连接字符串,只是在寻找增加每个表的名称转化为以后的检索和操纵名单的正确方法。

--------------解决方案-------------

System.Data.SqlClient满足您的需求而对SYS.TABLES正式查询(尽管这也正是它的使用在背景中)。 使用GetSchema()上的方法SqlConnection对象,然后指定你想要的“表”,它会送你DataTable对象回来一排的每个表。 它发回的数据库名,表模式名,表名和表型每一行(在该列顺序)。 代码如下所示:

public static List<string> GetTables(string connectionString)
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
DataTable schema = connection.GetSchema("Tables");
List<string> TableNames = new List<string>();
foreach (DataRow row in schema.Rows)
{
TableNames.Add(row[2].ToString());
}
return TableNames;
}
}

对于SQL Server 2005及更高版本:

using (SqlConnection connection = new SqlConnection(@"Data Source=(local);Integrated Security=True;Initial Catalog=DB_Name;")) {

connection.Open();

using (SqlCommand command = connection.CreateCommand()) {

command.CommandText =
@"SELECT s.name, o.name
FROM sys.objects o WITH(NOLOCK)
JOIN sys.schemas s WITH(NOLOCK)
ON o.schema_id = s.schema_id
WHERE o.is_ms_shipped = 0 AND RTRIM(o.type) = 'U'
ORDER BY s.name ASC, o.name ASC";

using (SqlDataReader reader = command.ExecuteReader()) {

while (reader.Read()) {

string schemaName = reader.GetString(0);
string tableName = reader.GetString(1);

// your code goes here...
}
}
}
}

我认为这应该SQL返回包含在你的数据库表名的表:

SELECT * FROM information_schema.tables

获取从数据库(SQLSERVER)中的所有用户定义的表,我们必须查询系统目录。

SELECT Name from Sysobjects where xtype = 'u'

这个查询将返回数据库中的所有用户定义的表

分类:C# 时间:2015-03-15 人气:0
本文关键词: SQL,语法
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.455 (s). 10 q(s)