是否有可接受的方法来确定字符串是否是有效的连接字符串?

时间:2016-07-08 19:41:21

标签: c#

我有一个命令行应用程序,它将以两种方式之一配置:

  1. XML文件
  2. SQL Server数据库(特别是Microsoft SQL Server,而不是通用的“SQL数据库”)
  3. 要设置配置,将使用config命令行参数调用它。

    myapp.exe -config [some file path]
    myapp.exe -config [some connection string]
    

    所以,我会在应用程序中找到一个字符串,我需要找出它是哪一个。

    是否有可接受的方法来确定给定字符串是否是有效的SQL连接字符串?我喜欢将两个选项中的任何一个作为相同的参数,然后在内部确定它是(1)文件路径,还是(2)连接字符串。

    有没有办法做到这一点,或者我应该只是尝试在路径上找到一个文件,并假设它是一个连接字符串,如果找不到该文件?反之亦然?

3 个答案:

答案 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文件。如果不认为它是一个连接字符串。如果文件路径包含空格,您可能需要考虑尾随引号。它可能就是这么简单。没有太多可以解决无效输入的问题。