我已经完成了一个应用程序的构建。
我清单上的最后一件事是将SQL连接字符串放在文件中,而不是硬编码(以便用户可以在需要时编辑它)。
连接失败,我从DataContext得到一个异常。
连接字符串绝对正确。唯一改变的是,因为它都在工作,我把连接字符串放在一个txt文件中,而不是硬编码它。
BEFORE (my app connected to database fine):
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()输出了字符串)。
我能想到的是,字符串实际上不是一个字符串,实际上是一些奇怪的格式?我不晓得。
顺便说一句,异常是由试图连接的位抛出的(而不是由文件读取位抛出的——代码读取文件,但DataContext不喜欢传递给它的字符串)。
有什么想法?
谢谢
尝试删除HP
后的双\
:
Data Source=HPSQLEXPRESS;Initial Catalog=LeadSystem;Integrated Security=True
在定义c#字符串时,双反斜杠是有效的,因为您需要转义反斜杠字符,但是从文件中读取时,它将被视为两个反斜杠字符。
在文本文件中不需要转义反斜杠,只有在代码中才需要。该文件应该包含:
Data Source=HPSQLEXPRESS;Initial Catalog=LeadSystem;Integrated Security=True
不需要加上双反斜杠try
Data Source=HPSQLEXPRESS;Initial Catalog=LeadSystem;Integrated Security=True