我有一个命令行应用程序,它将以两种方式之一配置:
要设置配置,将使用config
命令行参数调用它。
myapp.exe -config [some file path]
myapp.exe -config [some connection string]
所以,我会在应用程序中找到一个字符串,我需要找出它是哪一个。
是否有可接受的方法来确定给定字符串是否是有效的SQL连接字符串?我喜欢将两个选项中的任何一个作为相同的参数,然后在内部确定它是(1)文件路径,还是(2)连接字符串。
有没有办法做到这一点,或者我应该只是尝试在路径上找到一个文件,并假设它是一个连接字符串,如果找不到该文件?反之亦然?
答案 0 :(得分:0)
通常,标准是假设它是一个文件然后回退到原始值。重叠的可能性很低(除非您使用;
命名文件)并且检查文件是否容易且便宜。
答案 1 :(得分:0)
.NET中有SqlConnectionStringBuilder个类
它有constructor接受连接字符串作为参数: 如果连接字符串无效,它将抛出ArgumentException:
try
{
var connectionSb = new SqlConnectionStringBuilder("your CS");
}
catch(ArgumentException e)
{
//Connection string is not valid
}
对于文件,您可以使用File.Exists方法
答案 2 :(得分:0)
文件名不能包含等号。连接字符串始终包含相同的符号。 (如果你接受它,它就成了公认的方法。)
区分您是否确实需要知道它是否“有效”,或者您是否只需要决定是将其解释为连接字符串还是文件路径,这一点很重要。如果是后者,那么您可以在不验证的情况下做出决定。然后,如果你已经确定它是一个连接字符串但是它无法打开则会失败。 (它是否失败可能无关紧要,因为它的格式不正确或服务器不存在。)文件路径也是如此。
一种非常“低技术”的方法 - 如果参数以.xml
结尾,那么它就是一个XML文件。如果不认为它是一个连接字符串。如果文件路径包含空格,您可能需要考虑尾随引号。它可能就是这么简单。没有太多可以解决无效输入的问题。