在列表框上使用数据源时修改数据库后 System.Data.SqlClient.SqlException(无效的列名'...')

Posted

技术标签:

【中文标题】在列表框上使用数据源时修改数据库后 System.Data.SqlClient.SqlException(无效的列名\'...\')【英文标题】:System.Data.SqlClient.SqlException (Invalid Column Name '...') after modifying database when using Data Source on a listbox在列表框上使用数据源时修改数据库后 System.Data.SqlClient.SqlException(无效的列名'...') 【发布时间】:2021-02-20 11:33:33 【问题描述】:

我刚开始使用 Visual Studio 开发我的第一个应用程序。我创建了自己的 SQL Server 数据库,并使用工作正常的数据源将其连接到列表框元素。

但是我注意到,在修改数据源(假设删除一列)后,我得到了标题中提到的错误,这很有意义,因为显然该列不再存在。但是我如何告诉 Visual Studio 它不再需要查找已删除的列?

收到错误后,我只被定向到这行代码:

this.tableNameTableAdapter.Fill(this.dbNameDataSet.dbtable);

我真的无能为力。我尝试在互联网上查找多个答案,但找不到遇到相同问题的人(可能是因为我使用了错误的关键字)。

有什么建议吗?感谢您帮助我!

附加问题:这是否称为 DataBinding

【问题讨论】:

手动编写代码是不是更好的选择? 【参考方案1】:

您需要在架构发生任何更改后重新配置 TableAdapter

configure-a-tableadapters-fill-method

更好的是,先在 TableAdapter 中进行更改,它们将反映到数据库中:

您对 TableAdapter 的主要 Fill 方法所做的任何更改都会反映在关联数据表的架构中。例如,在主 Fill 方法中从查询中删除一列也会从关联的数据表中删除该列。此外,从主 Fill 方法中删除该列会从对该 TableAdapter 的任何其他查询中删除该列。

【讨论】:

感谢您的帮助。进行更改(例如删除列)后,我的数据库不会应用这些更改。你能解释一下谁应该根据 TableAdapter 中所做的更改来“更新”自己吗? 一旦您连接到数据库,您通过 Visual Studio 应用的任何更改都将显示在您的数据库中。

以上是关于在列表框上使用数据源时修改数据库后 System.Data.SqlClient.SqlException(无效的列名'...')的主要内容,如果未能解决你的问题,请参考以下文章

使用带有排序组合框和页面组合框上的许多项目的列表视图

成功完成初始自动完成后,如何在 WinForm 文本框上重新启动自动完成?

EXTJS:如何在组合框上自动完成查询后从数据存储中清除“查询”参数

搜索自动提示的简单模拟JQuery

如何在另一个选择框上使用相关的选择框?

鼠标在列表框上滚动