C# 使用c获取数据库中的所有表名#
我正在使用VS2010、.Net 4.0、MS SQL SERVER 2008C# 使用c获取数据库中的所有表名#,c#,sqlconnection,getschematable,C#,Sqlconnection,Getschematable,我正在使用VS2010、.Net 4.0、MS SQL SERVER 2008 GetSchema (string collectionName, string[] restrictionValues); 我想我知道如何从数据库中获取所有表名。但我错了。对于表名,我还可以得到视图名。但当我为视图做这些时,我只得到视图。我不知道为什么会这样 这是我的代码,我已经尝试过了: public DataTable getAllTables(string serverName, string db
GetSchema (string collectionName, string[] restrictionValues);
我想我知道如何从数据库中获取所有表名。但我错了。对于表名,我还可以得到视图名。但当我为视图做这些时,我只得到视图。我不知道为什么会这样
这是我的代码,我已经尝试过了:
public DataTable getAllTables(string serverName, string dbName, string authenticationType, string Login, string pass)
{
using (SqlConnection sqlConn = Return_Conn(serverName, dbName, authenticationType, Login, pass))
{
sqlConn.Open();
DataTable dt = sqlConn.GetSchema("Tables");
DataTable dt1 = new DataTable();
string[] column = { "TABLE_NAME" };
dt1 = dt.DefaultView.ToTable("dd", false, column);
sqlConn.Close();
return dt1;
}
}
public DataTable getAllViews(string serverName, string dbName, string authenticationType, string Login, string pass)
{
using (SqlConnection sqlConn = Return_Conn(serverName, dbName, authenticationType, Login, pass))
{
sqlConn.Open();
DataTable dt = sqlConn.GetSchema("Views");
DataTable dt1 = new DataTable();
string[] column = { "TABLE_NAME" };
dt1 = dt.DefaultView.ToTable("dd", false, column);
sqlConn.Close();
return dt1;
}
}
在数据表dt=sqlConn.GetSchema(“表”)代码>
此行,dt包含所有表和视图。在dt中,视图的表格类型显示“视图”,而表格的显示“基表”
GetSchema (string collectionName, string[] restrictionValues);
但是在数据表dt=sqlConn.GetSchema(“视图”)代码>
此行,dt仅包含视图
这里出了什么问题?我该如何解决这个问题?我会运行这样的查询,而不是GetSchema:
SELECT * FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE='BASE TABLE'
如果只想获取表,则需要限制模式。对于
表
,支持四个限制:(1)目录,(2)所有者,(3)表,以及(4)表类型
GetSchema (string collectionName, string[] restrictionValues);
所以你可以这样写:
var tables = sqlConn.GetSchema("Tables", new string[] { null, null, null, "BASE TABLE" });
谢谢,我知道。但我写的有什么不对?可能重复的query@spajce我并不是在要求一个不同的解决方案。我在问如何解决我写的问题。它不在重复列表中。好的。。因此,链接中有一个简单的解决方案:)你建议哪一个?我做的和上面的答案一样,剩下的两个也没什么不同。我不想写直接询问。:)如果是的话。。为什么会发生这种情况?:)以下是相关文档:。Quote:“表类型、字符串、表类型。可以是视图或基表。”