从文件中获取字符串时,编译器无法创建 SqlConnection 实例
Compiler Can't create SqlConnection instance when getting string from file
我创建了一个 Windows Forms 应用程序,我正在从其中的数据库中获取数据,但是我遇到了一个问题:无法实例化 SqlConnection
对象。
当我声明这个连接字符串时,它起作用了:
static string connectionString = "Data Source=DEVELOPMENT-PC\SQLEXPRESS;Initial Catalog=DATABASE;Integrated Security=True";
但是当我从文本文件中检索它时,它不起作用:
static string a = File.ReadAllText(Path.Combine(Path.GetDirectoryName(Environment.GetCommandLineArgs()[0]), "connectionString.txt")).ToString();
一点:当我写 MessageBox.Show(a);
时,我在 window 中看到与上面显示的连接字符串相同的字符串。
可能是什么问题?
问题实际上是文本文件中有两个斜线。该字符串在 C# 中进行了转义,但不需要在文本文件中进行转义。 C#是这样的:
"Data Source=DEVELOPMENT-PC\SQLEXPRESS;Initial Catalog=DATABASE;Integrated Security=True"
文本文件应该只有一个斜杠:
Data Source=DEVELOPMENT-PC\SQLEXPRESS;Initial Catalog=DATABASE;Integrated Security=True
这是因为您在 C# 中对斜线进行转义,文本文件不需要对字符串进行转义。例如,在 C# 中,像 "This is my\nstring"
这样的字符串是两行,如果您想在文本文件中获得相同的效果,只需将其写在两行中即可。斜杠是转义序列的开始,通过写 \ 你告诉它忽略它并在它的位置使用一个斜杠。
如果您只想在 C# 代码中使用一个斜线,您也可以这样做:
static string connectionString = @"Data Source=DEVELOPMENT-PC\SQLEXPRESS;Initial Catalog=DATABASE;Integrated Security=True";
这里的 @
符号告诉编译器以下字符串不包含任何转义序列并将其视为文字。这使得它更容易,尤其是在处理文件路径时,因此您不必转义所有斜杠。
我创建了一个 Windows Forms 应用程序,我正在从其中的数据库中获取数据,但是我遇到了一个问题:无法实例化 SqlConnection
对象。
当我声明这个连接字符串时,它起作用了:
static string connectionString = "Data Source=DEVELOPMENT-PC\SQLEXPRESS;Initial Catalog=DATABASE;Integrated Security=True";
但是当我从文本文件中检索它时,它不起作用:
static string a = File.ReadAllText(Path.Combine(Path.GetDirectoryName(Environment.GetCommandLineArgs()[0]), "connectionString.txt")).ToString();
一点:当我写 MessageBox.Show(a);
时,我在 window 中看到与上面显示的连接字符串相同的字符串。
可能是什么问题?
问题实际上是文本文件中有两个斜线。该字符串在 C# 中进行了转义,但不需要在文本文件中进行转义。 C#是这样的:
"Data Source=DEVELOPMENT-PC\SQLEXPRESS;Initial Catalog=DATABASE;Integrated Security=True"
文本文件应该只有一个斜杠:
Data Source=DEVELOPMENT-PC\SQLEXPRESS;Initial Catalog=DATABASE;Integrated Security=True
这是因为您在 C# 中对斜线进行转义,文本文件不需要对字符串进行转义。例如,在 C# 中,像 "This is my\nstring"
这样的字符串是两行,如果您想在文本文件中获得相同的效果,只需将其写在两行中即可。斜杠是转义序列的开始,通过写 \ 你告诉它忽略它并在它的位置使用一个斜杠。
如果您只想在 C# 代码中使用一个斜线,您也可以这样做:
static string connectionString = @"Data Source=DEVELOPMENT-PC\SQLEXPRESS;Initial Catalog=DATABASE;Integrated Security=True";
这里的 @
符号告诉编译器以下字符串不包含任何转义序列并将其视为文字。这使得它更容易,尤其是在处理文件路径时,因此您不必转义所有斜杠。