从TXT文件读取时,LINQ SQL连接字符串不起作用

时间:2015-08-28 11:55:43

标签: c# linq connection-string sqlconnection

我已经完成了构建应用程序。

我列表中的最后一件事是将SQL连接字符串放在一个文件中,而不是硬编码(这样用户可以根据需要进行编辑)。

连接失败,我从DataContext获得异常。

连接字符串是definitley正确的。唯一改变的是,因为它完全有效,我将连接字符串放在txt文件中而不是硬编码。

BEFORE(我的应用程序连接到数据库正常):

    private string conString = "Data Source=HP\\SQLEXPRESS;Initial Catalog=LeadSystem;Integrated Security=True";
    public LogIn()
    {

        dc = new MyDataContext(conString);
        if (dc.DatabaseExists())
        {
            InitializeComponent();
        }
        else
        {
            MessageBox.Show("There has been an error, please try again. If ther problem persists, call you know who. Error: Can't connect to database! Make sure the network is all good (connection to ADMIN PC)" /*+ e.ToString()*/);
        }
    }

现在(不工作):

    private string conString;
    public LogIn()
    {

    try
        {
            ConnectionString.globalConString = System.IO.File.ReadAllText("connString.txt").ToString();
            this.conString = ConnectionString.globalConString;
        }
        catch (IOException e)
        {
            MessageBox.Show("There was an error reading the conn string file.");
            return;
        }           

        dc = new MyDataContext(conString);
        if (dc.DatabaseExists())
        {
            InitializeComponent();
        }
        else
        {
            MessageBox.Show("There has been an error, please try again. If ther problem persists, call you know who. Error: Can't connect to database! Make sure the network is all good (connection to ADMIN PC)" /*+ e.ToString()*/);
        }
    }

txt文件只包含:

Data Source=HP\\SQLEXPRESS;Initial Catalog=LeadSystem;Integrated Security=True

文件位于正确的位置,应用程序可以读取它(我已使用MessageBox.Show()输出字符串。)

我能想到的是,字符串实际上并不是字符串,实际上是一些奇怪的格式?我不知道。

BTW,尝试连接的位抛出异常(不是通过文件读取位 - 代码读取文件,但DataContext不喜欢传递给它的字符串)。

任何想法??

由于

3 个答案:

答案 0 :(得分:0)

您不需要在文本文件中转义反斜杠,只能在代码中转义。该文件应包含:

Data Source=HP\SQLEXPRESS;Initial Catalog=LeadSystem;Integrated Security=True

答案 1 :(得分:0)

尝试在\\之后删除双HP

Data Source=HP\SQLEXPRESS;Initial Catalog=LeadSystem;Integrated Security=True

在定义C#字符串时,双反斜杠是有效的,因为你需要转义反斜杠字符,但是当从文件中读取时,它会被视为两个反斜杠字符。

答案 2 :(得分:0)

你不需要把双反斜杠试试

Data Source=HP\SQLEXPRESS;Initial Catalog=LeadSystem;Integrated Security=True