我试图在表格中插入一条记录,其中一列有以下值。
\\\\a\\b\\c
Database DataProvider = new SqlDatabase(connectionstring);
DataProvider.ExecuteNonQuery("sprocname",
Id,
qText,
);
此处,qText
具有以上价值。执行后,该值仅作为\
(单反斜杠)添加到表中。
如果我尝试在表格中手动插入记录,
INSERT INTO mytbl(id, q) VALUES
(0, '\\\\a\\b\\c')
插入正确的值。出现这种情况的原因是什么?我在这里错过了什么吗?
更新
似乎无论我的字符串是什么,只有它的第一个字母插入该列!不知道为什么。该列的数据类型为varchar(max)
实施例。
for qText = 'abc', then column has value `a`
for qText = '\\\\a\\b\\c', then column has value `\`
答案 0 :(得分:5)
反斜杠是一个转义序列字符,因此两个反斜杠将被解释为一个反斜杠。如果你想在这种情况下保持你的反斜杠,请使用逐字字符串文字,它在字符串文字的开头添加@。
var qText = @"\\\\a\\b\\c";
答案 1 :(得分:0)
将\
存储在字符串变量中时,需要将其添加为转义序列"\\"
所以,如果我们写
String qText = "\\"
qText
的值为\
因此,要存储\\\\a\\b\\c
,您应该将\
的数量加倍。
String qText = "\\\\\\\\a\\\\b\\\\c"
这种方式在使用时,qText的值将为\\\\a\\b\\c
答案 2 :(得分:0)
问题出在存储过程中。该过程的输入参数为varchar
,但未指定长度。