gpt4 book ai didi

.net - C# 中的动态数据库绑定(bind)

转载 作者:搜寻专家 更新时间:2023-10-30 19:50:04 27 4
gpt4 key购买 nike

我这里有一个项目连接到生产中的数据库并获取表和 View 。我继承的代码通过 SqlConnection 使用用户提供的凭据和他们提供的数据库位置连接到 SQL Server 数据库。当需要数据时,它使用连接和 SQL 字符串创建一个 SqlDataAdapter,并填充一个全新的 DataSet。然后在处理数据后显示该数据,用适当的显示名称替换表列名称,诸如此类。

问题是,整个过程比较慢,锦上添花的是在ListViews中显示大量的数据,万行数据不爽。出于设计原因,我们不会进入页面 - 有一个搜索控件 - 我可以非常努力地实现一个虚拟 ListView 以简单地回到我原来的位置。我只是认为这是 ListViews 的错误应用程序 - 我正在连接到数据库,并且正在显示记录。听起来像是 DataGridView 的工作。

遗憾的是,它根本行不通。我正在尝试将 DataGridView 绑定(bind)到我通过 DataBinder 从连接代码获得的 DataSet,但是当我启动它查看数据位于 DataSet 中而 DataGridView 完全为空时。

但是,如果我在我的测试数据库上使用 GUI 绑定(bind),采用当前数据库模式和我的凭据,你瞧,它很有用。但我不能使用这些东西,因为它不够灵活——我不想在每次更新数据库时都必须更改的代码中定义模式,而且我需要访问连接字符串,并且我似乎没有从它创建的 TableAdapter 中得到它。

我是否遗漏了使我的 DataSet/BindingSource 解决方案正常工作的简单方法?我是不是找错树了?

是否值得摆弄绑定(bind)?我能看到的所有绑定(bind)内容似乎让我完成了 90% 的工作,但是我无法按照我想要的方式修改连接字符串或对特定列进行排序,而且它似乎希望我给它一个定义的模式一旦数据库发生变化,它就会崩溃——而手写代码至少是防御性设计的,而且非常灵活。我不会削减功能,而且缓慢的解决方案已经奏效了 - 如果我必须放弃我的一些要求才能让它工作,我们将只处理现有的。

最佳答案

只要您指定了表名,它就应该可以正常工作(否则 IIRC 将使用第一个表)。当然,您可以通过为 DGV 提供适当的 DataTable(而不是 DataSet)来简化事情。您可能还想检查是否在 DGV 上启用了自动列生成。但是绑定(bind)到一个临时数据表工作正常;我一直用它来做例子等。

关于.net - C# 中的动态数据库绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/165848/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com