通用数据链接 - 无法打开文件。确保它是有效的数据链接文件

时间:2016-04-06 13:18:52

标签: c# connection-string

我正在尝试用C#编程创建一个UDL文件。在我的程序中,我想向用户显示数据链接属性窗口,但是我有自己的连接字符串默认值。我最初想过要做以下事情:

string[] lines = new string[]
{
    "[oledb]",
    "; Everything after this line is an OLE DB initstring",
    "Provider=SQLOLEDB.1;Persist Security Info=False"
};

File.WriteAllLines("Test.udl", lines);
Process p = Process.Start("Test.udl");
p.WaitForExit();

但是,尝试打开文件时出现此错误:

  

无法打开文件。确保它是有效的数据链接文件。

这很奇怪,因为我创建了一个空文件,命名为something.udl,打开它,单击OK,然后打开文件的内容:

[oledb]
; Everything after this line is an OLE DB initstring
Provider=SQLOLEDB.1;Persist Security Info=False

但是在连接字符串的末尾有一个换行符。我使用KDiff来比较这个文件和我在程序中创建的文件,它说"文件是相同的文本,但它们不是二进制相等的"或类似的东西。

我认为它与File.WriteAllLines方法如何写字符串有关。所以我试图在方法中使用不同的编码,但没有成功。关于我哪里出错的任何想法?

我使用this MSDN link作为有关UDL文件的参考。还有一点值得注意的是,如果我打开一个新文本文件并过去我lines数组中的所有行,我会得到同样的错误。

1 个答案:

答案 0 :(得分:1)

您需要做的就是使用Unicode编码:

File.WriteAllLines("Test.udl", lines, Encoding.Unicode);