VB.net在sql中存储变量名以用于进程启动参数

时间:2015-06-16 12:32:39

标签: c# vb.net

我正在使用脚本和应用程序启动器构建诊断工具,我在.net 3.5中执行此操作。我们可能很快就能使用.net 4,但因为windows xp而无法使用。

正在从sql表中填充菜单,链接到这些应用程序。

这些应用程序中的一些是脚本并且需要运行参数,我不希望人们必须输入任何内容,并且应用程序将这些参数属性(例如用户和主机名)存储为诊断工具的一部分。如果此脚本所需的参数作为字符串存储在sql上,我该如何将其转换为变量值?

例如:

Public strHostname As String = "pc1" 'global variable set by computer

strArguments = "/c /v:strHostname /wait" 'pulled from sql

在为process.start构建我的参数字符串时,我想从我的公共变量中使用“pc1”从strArguments切换strHostname。

显然,最好用标准字符串find和replace来完成,但我确实有数百个变量,并且不希望构造一个大的case语句。

有没有其他方法可以使用字符串“strHostname”并使用它来查找公共strHostname的值?

1 个答案:

答案 0 :(得分:1)

像这样创建一个Parameter类:

class Parameter
{
    public string Name { get; set; }
    public string Value { get; set; }
}

在数据库上,你有一个带有Name和Value列的参数表(SQL Server中的nvarchar),表格就像这样填充(我只显示第一行):

Name           Value
%HostName      pc1

我在参数名称前加上'%'以便在参数字符串中轻松找到它。

从数据库中读取参数表到例如参数的数组/列表,然后使用参数替换参数中的所有参数:

string arguments = "/c /v:%HostName /wait";
foreach (Parameter parameter in Parameters)
{
    arguments = arguments.Replace(parameter.Name, parameter.Value);
}