首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在LINQ中从给定的Sql Server中获取数据库名称

如何在LINQ中从给定的Sql Server中获取数据库名称
EN

Stack Overflow用户
提问于 2010-02-05 21:45:35
回答 3查看 3.7K关注 0票数 2

我让DropDownList显示我的网络中存在的所有服务器,当我将其更改为另一个下拉列表时,我想要填充数据库名称,我想要一个LINQ查询来获得此结果。

EN

回答 3

Stack Overflow用户

发布于 2010-02-05 21:59:34

有关如何获取登录用户可用的数据库列表的信息,请参阅question here

代码语言:javascript
复制
SELECT name
FROM sys.sysdatabases
WHERE HAS_DBACCESS(name) = 1

要在LINQ中实现此功能,您需要将sysdatabases视图发布到您自己的视图中。我建议在其中一个数据库中为作业创建一个视图:

代码语言:javascript
复制
CREATE VIEW [dbo].[vewDatabases]
AS
SELECT  name
FROM    sys.sysdatabases
WHERE   HAS_DBACCESS(name) = 1

GO

将其添加到您的LINQ数据模型中,您将能够像这样选择c#

代码语言:javascript
复制
var databaseNames = serverDataContext.vewDatabases.Select(a => a.name);

然后,您可以使用databaseNames的内容填充DropDownList

票数 3
EN

Stack Overflow用户

发布于 2010-02-05 21:56:45

我不认为这是Linq2SQL的工作(尽管我不太熟悉它)。

基本上,我认为您可以通过查看某个SYS_表或SP_存储过程来获得所需的结果。记不清是哪个了--我已经有一段时间没用过SQL Server了。

票数 1
EN

Stack Overflow用户

发布于 2010-02-05 23:18:42

尝试下面的代码:

代码语言:javascript
复制
    protected void ddList_SelectedIndexChanged(object sender, EventArgs e)
    {
        PopulateDatabaseDropDown(ddList.SelectedItem.Text);
    }
    private void PopulateDatabaseDropDown(string server)
    {
        ddDatabase.DataSource = DatabaseName(server);
        ddDatabase.DataValueField = "DatabaseId";
        ddDatabase.DataTextField = "Name";            
        ddDatabase.DataBind();
    }
    private DataBase[] DatabaseName(string serverName)
    {
        List<DataBase> data = new List<DataBase>();
        System.Data.Linq.DataContext db = new System.Data.Linq.DataContext("Data Source="+serverName+";Initial Catalog=master;Integrated Security=SSPI");
       var dbName = db.ExecuteQuery<DataBase>("select database_id, [name] from sys.databases").AsEnumerable();
       foreach (var item in dbName)
           data.Add(new DataBase() { DatabaseId = item.DatabaseId, Name = item.Name });
       return data.ToArray();
    }
}
public class DataBase
{
    public string Name { get; set; }
    public int DatabaseId { get; set; }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2207569

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档