通用数据 Link - 无法打开文件。确保它是一个有效的数据 Link 文件
Universal Data Link - File cannot be opened. Ensure it is a valid Data Link file
我正在尝试在 C# 中以编程方式创建 UDL 文件。在我的程序中,我想向用户显示数据 Link 属性 window 但使用我自己的连接字符串默认值。我最初想做以下事情:
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();
但是,我在尝试打开文件时遇到此错误:
File cannot be opened. Ensure it is a valid Data Link file.
这很奇怪,因为我创建了一个空文件,将其命名为 something.udl
,打开它,单击 OK
,然后打开文件的内容是:
[oledb]
; Everything after this line is an OLE DB initstring
Provider=SQLOLEDB.1;Persist Security Info=False
但是在连接字符串的末尾有一个换行符。我用 KDiff 比较了这个文件和我在我的程序中创建的文件,它说 "Files are equal text but the they are not binary equal" 或类似的东西。
我相信这与 File.WriteAllLines
方法如何写入字符串有关。因此,我尝试对该方法使用不同的编码,但没有成功。关于我哪里出错的任何想法?
我使用 this MSDN link 作为 UDL 文件的参考。同样有趣的是,如果我打开一个新的文本文件并在我的 lines
数组中的所有行中过去,我会遇到同样的错误。
您只需使用 Unicode 编码即可:
File.WriteAllLines("Test.udl", lines, Encoding.Unicode);
在 plain-text 编辑器中创建文件时,使用 UTF-16 Little Endian 编码并包含一个字节顺序标记(自从 Microsoft 在 Intel 平台上开始他们认为这是他们谈话时的“默认”关于 UTF-16)。
使用程序时,请确保也使用该特定编码,编程语言可能仍默认使用旧代码页或使用 UTF-8,在这种情况下打开 UDL 文件将触发问题中显示的错误.
我正在尝试在 C# 中以编程方式创建 UDL 文件。在我的程序中,我想向用户显示数据 Link 属性 window 但使用我自己的连接字符串默认值。我最初想做以下事情:
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();
但是,我在尝试打开文件时遇到此错误:
File cannot be opened. Ensure it is a valid Data Link file.
这很奇怪,因为我创建了一个空文件,将其命名为 something.udl
,打开它,单击 OK
,然后打开文件的内容是:
[oledb]
; Everything after this line is an OLE DB initstring
Provider=SQLOLEDB.1;Persist Security Info=False
但是在连接字符串的末尾有一个换行符。我用 KDiff 比较了这个文件和我在我的程序中创建的文件,它说 "Files are equal text but the they are not binary equal" 或类似的东西。
我相信这与 File.WriteAllLines
方法如何写入字符串有关。因此,我尝试对该方法使用不同的编码,但没有成功。关于我哪里出错的任何想法?
我使用 this MSDN link 作为 UDL 文件的参考。同样有趣的是,如果我打开一个新的文本文件并在我的 lines
数组中的所有行中过去,我会遇到同样的错误。
您只需使用 Unicode 编码即可:
File.WriteAllLines("Test.udl", lines, Encoding.Unicode);
在 plain-text 编辑器中创建文件时,使用 UTF-16 Little Endian 编码并包含一个字节顺序标记(自从 Microsoft 在 Intel 平台上开始他们认为这是他们谈话时的“默认”关于 UTF-16)。
使用程序时,请确保也使用该特定编码,编程语言可能仍默认使用旧代码页或使用 UTF-8,在这种情况下打开 UDL 文件将触发问题中显示的错误.