【发布时间】:2021-01-29 16:08:56
【问题描述】:
简介
我的 Windows 窗体应用程序允许我加载、查看和更改 CAN 网络上的工业控制器网络的设置。这些设置被加载到存储所有信息的数据库中。客户不时要求新功能,并且更新控制器固件以包含新设置。这些新设置需要加载到数据库中,因此,我将新列添加到数据库中以便能够存储它们。除此之外,我还能够加载旧数据库以查看安装中每个控制器的设置。
问题描述
我的问题是每次向数据库添加新列时,我还必须向 SQL 查询的 SELECT 命令添加另一个字段。因此,每次我将旧数据库加载到我的应用程序时,SQL 查询都会引发异常,因为我正在请求旧数据库没有的列。
当前解决方案
我通过为每种数据库类型创建一个“填充”SQL 查询并使用 Try-Catch 循环解决了这个问题,首先我尝试查询最多的列(具有最多设置的最新数据库类型),如果抛出异常我移动到下一个最大的数据库查询。这样,我将不得不为每个数据库大小创建一个 SQL 查询。
问题
有没有更清洁的方法来做到这一点?我正在使用 Visual Studio,目标 .NET 框架是 4.0。
感谢您的时间和考虑。
【问题讨论】:
-
如果您的应用程序不知道存在哪些列,那么它似乎必须使用
DbDataAdapterFillSchema(...)方法之一来获取可用的列,这决定了输入字段显示在用户界面中。
标签: sql database vb.net winforms