Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在处理“问题”时发出\0“;通过命令参数在Sql Server数据库中_C#_Sql Server - Fatal编程技术网

C# 在处理“问题”时发出\0“;通过命令参数在Sql Server数据库中

C# 在处理“问题”时发出\0“;通过命令参数在Sql Server数据库中,c#,sql-server,C#,Sql Server,当我通过C#[.Net 4]代码从MS SQL Server数据库查询数据并向查询中添加一个值为“\0””的参数时,将毫无例外地获得datareader,当我从datareader读取数据时,我会得到异常 出于测试目的,我使用了“\0”来代替GUID,除了在输入端之外,是否有其他方法可以解决此问题。我认为您混淆了几种类型的Null(.NET ClrNull引用、数据库Null值和ASCII 0字符文本) 如果要在C#pass中传递空字符串 传递空值传递null string nullString

当我通过C#[.Net 4]代码从MS SQL Server数据库查询数据并向查询中添加一个值为“\0””的参数时,将毫无例外地获得datareader,当我从datareader读取数据时,我会得到异常


出于测试目的,我使用了
“\0”
来代替GUID,除了在输入端之外,是否有其他方法可以解决此问题。

我认为您混淆了几种类型的Null(.NET Clr
Null
引用、数据库
Null
值和ASCII 0字符文本)

如果要在C#pass中传递空字符串

传递空值传递
null

string nullString = null;
但是,要传递数据库
NULL
,请传递DBNull

dbParam.Value = string.IsNullOrEmpty(str)? DBNull.Value : str;

另请参见

@sehe不确定,从数据库返回值后转换值可能会出现问题。“这不会是一个错误,”萨拉瓦南请提供更多的细节。这张桌子看起来像什么?还请发布准确的查询和参数类型。好的,同意他需要显示更多代码。然而,问题是在接收结果之前,将值(可能无效)传递到准备好的查询中command@sehe:和Marnix van Valen。这是我的错误,事实上,当我从datareader读取数据时,我得到了错误,我一直检查到execute reader,并忽略了reader.read()调用。。无论如何。。谢谢你的回复为什么你不提供人们想要的信息?请。请注意,我在测试时从PEX获得了ASCII 0字符文本。有没有办法用C#?中的复选框过滤掉0个字符的文字?当然可以。只需搜索字符(
.IndexOf
),替换它(
.replace(“\0”),“)
),或者只需比较它(
string.Equals(str,“\0”)?DBNull.Value:str
),我现在正按照您所说的做,但报告为错误的值,而不是替换。感谢您的明确解释。如果您曾经使用过Pex和Moles,请告诉我它在单元测试中的用法。我目前正在探索这些。
dbParam.Value = string.IsNullOrEmpty(str)? DBNull.Value : str;