在列表框上使用数据源时修改数据库后 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 文本框上重新启动自动完成?