使用文本文件中提到的数据库连接字符串时出现问题

马杜gp

成员
已加入
2017年11月27日
留言内容
11
编程经验
5-10
亲爱的朋友们,
请帮助解决我的问题。
我想将数据库连接字符串放在文本文件中
我想从C#的Windows窗体中读取文本。
名为文本文件中的连接字符串"server.txt" is as follows

数据源= MADHU \\ SQLEXPRESS;初始目录= GSTNDB;用户ID = sa;密码= admin123

我的代码在单击按钮是
    private void button1_Click(object sender, EventArgs e)
    {
        string Conn;
        string connetionString = null;
        SqlConnection connection;
        SqlDataAdapter adapter;
        SqlCommand command = new SqlCommand();
        DataSet ds = new DataSet();
        string srv = System.IO.File.ReadAllText(@"d:server.txt");
        connetionString = srv;
        connection = new SqlConnection(connetionString);
        connection.Open();
        command.Connection = connection;
        command.CommandType = CommandType.StoredProcedure;
        command.CommandText = "gst_proc";
        adapter = new SqlDataAdapter(command);
        adapter.Fill(ds);
    }


在执行它时显示错误消息……。


System.Data.dll中发生了类型为'System.Data.SqlClient.SqlException'的未处理的异常


附加信息:建立与SQL Server的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称正确和SQL

如果我使用与静态值相同的连接字符串,则可以正常工作,但是如果我读取文本文件,则显示
上面的错误信息。

谢谢并恭祝安康

马杜
 
由主持人最后编辑:

金西尼

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
3,563
地点
悉尼,澳大利亚
编程经验
10+
首先,为了方便阅读,我已经格式化了您的代码段。以后请为我们这样做。您可以自己键入标签,也可以使用高级编辑器上的工具栏按钮。

对于此问题,您的实际连接字符串应为:
C#:
Data Source=MADHU[B][COLOR="#008000"]\[/COLOR][/B]SQLEXPRESS;Initial Catalog=GSTNDB;User ID=sa;Password=admin123
而不是:
C#:
Data Source=MADHU[B][COLOR="#FF0000"]\\[/COLOR][/B]SQLEXPRESS;Initial Catalog=GSTNDB;User ID=sa;Password=admin123
在C#代码中,正斜杠是转义字符,即它赋予其他字符特殊的含义。例如,要编写一个带换行符的文字字符串,您可以这样做:
C#:
var str = "FIRST LINE\r\nSECOND LINE";
'\ r'是回车符,'\ n'是换行符。由于正斜杠在代码中具有特殊含义,因此,如果要在字符串中包含正斜杠字符,则必须对其进行转义,这可以使用...正斜杠来完成。例如,如果您想指定文件路径“ C:\ SomeFolder \ SomeSubFolder \ SomeFile.txt”,则实际上可以这样:
C#:
var filePath = "C:\\SomeFolder\\SomeSubFolder\\SomeFile.txt";
在每种情况下,一对中的第一个正斜杠实际上不是文本的一部分,而是一个转义字符,指示第二个正斜杠是文本的一部分。请注意,如果不需要任何其他转义字符,则现在可以使用逐字字符串文字,这可以使事情更清楚。为此,可以在字符串文字的前面加上@符号,然后将每个正斜杠假定为文字字符:
C#:
var filePath = @"C:\SomeFolder\SomeSubFolder\SomeFile.txt";
在您的情况下,如果将连接字符串写为字符串文字,则需要转义正斜杠:
C#:
var connectionString = "数据源= MADHU \\ SQLEXPRESS;初始目录= GSTNDB;用户ID = sa;密码= admin123";
或使用逐字字符串文字:
C#:
var connectionString = @"Data Source=MADHU\SQLEXPRESS;Initial Catalog=GSTNDB;User ID=sa;Password=admin123";
我建议第二种选择。但是,如果您正在从文件或其他来源读取文本,则说明您未使用字符串文字,即直接在代码中编写的字符串。在这种情况下,您不使用转义字符,因为它们仅用于文字。
 
最佳 底部