在datagridviewdatarow中从数据库中检索带有转义字符的文件路径
本文关键字:转义字符 文件 路径 检索 datagridviewdatarow 数据库 | 更新日期: 2023-09-27 18:08:15
我在MS Access数据库文件中存储各种数据,并将其填充到dataGridView中。其中一列是存储文件位置的字段。如果我加载数据库文件,可以看到它被存储为
D:'test'1.txt
现在我尝试使用下面的
检索它foreach (DataRow row in dataTable.Rows)
{
string Location = row["file_location"].ToString();
}
当我检查调试监视窗口时,我可以看到string Location
实际上是D:''test''1.txt
,现在我明白它正在添加'
作为转义字符,但我不确定如何让我的string Location
实际保持正确的路径,而不是转义路径。
我尝试以几种方式添加逐字字符串文字,但我不确定它是否会以我所读到的方式影响它,特别是如果它已经从数据库文件中取出,或者即使我把它放在正确的位置。
我尝试了下面的两个选项,但我都不相信它们会起作用,最后它们都没有起作用。
string Location = @"";
Location = row["file_location"].ToString();
和
string Location = @row["file_location"].ToString();
希望有人能帮我解决这个问题。我读了很多StackOverflow的文章,我似乎找不到一些东西,以一种我能理解的方式谈论我的具体问题
逐字字符串(在这个stackoverflow问题中讨论过)实际上是用于编译时的字面量,对于在运行时赋值根本没有用。
看起来你唯一担心的转义字符是反斜杠,所以一个非常快速的解决问题的方法是:
string Location = row["file_location"].ToString().Replace("''","'");
当然可能有更优雅的方式。
更新:
如前所述,您可能没有理解手表窗口。不管实际值是多少,这些字符串都会被转义。考虑:
static void Main(string[] args)
{
watchisescaping();
Console.ReadKey();
}
static void watchisescaping()
{
string location = @"c:'dim'bulbs";
Console.WriteLine(location);
Console.ReadKey();
}
观察窗口显示位置为c:''dim''bulbs
,但控制台输出应为c:'dim'bulbs
。当您在数据网格中查看字符串时,您确定它确实仍然被转义了吗?