Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/290.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# 在查询中插入空值作为插值参数_C#_.net_Dapper_Xunit - Fatal编程技术网

C# 在查询中插入空值作为插值参数

C# 在查询中插入空值作为插值参数,c#,.net,dapper,xunit,C#,.net,Dapper,Xunit,我试图通过使用InlineData使用xUnit构建一个简单的测试: [Theory] [InlineData(null, "Message")] public void MyTest(object value, string message) { var insertQuery = $@"INSERT INTO {_MyTable} ( [MyId] )

我试图通过使用InlineData使用xUnit构建一个简单的测试:

[Theory]
[InlineData(null, "Message")]
public void MyTest(object value, string message)
{
    var insertQuery = $@"INSERT INTO {_MyTable} (
                            [MyId]
                        ) VALUES (
                            {value}
                        );";

    using (IDbConnection connection = new SqlConnection(_connectionString))
    {
        connection.Execute(query);
    }
}
我确实想插入值NULL,但执行时会出现以下问题:

'附近的语法不正确'。'

事实上,如果我去检查查询,它看起来是这样的:

INSERT INTO TestTable (
        [MyId]
    ) VALUES (
        
    );
因此,在查询中没有正确插入插入的参数。我该怎么做?谢谢大家!

既然您已经标记了它,基本上:不要使用插值字符串;这不是它的本意。相反:

使用var connection=newsqlconnection(_connectionString);
连接。执行(@“
插入到表名thishouldbeaconstant([MyId])
值(@value);”,新的{value});
请注意,这里的
value
最好是作为字符串/int/等键入。

因为您已经标记了它,基本上:不要使用插值字符串;这不是它的本意。相反:

使用var connection=newsqlconnection(_connectionString);
连接。执行(@“
插入到表名thishouldbeaconstant([MyId])
值(@value);”,新的{value});

请注意,
value
在这里最好是以字符串/int/等形式键入。

这将通过使用参数化查询来解决,因为您无论如何都应该这样做,以获得良好的实践和安全性这将通过使用参数化查询来解决,正如为了良好的实践和安全性您应该做的那样,我尝试了这种方法,结果是:“‘不允许从数据类型sql_variant隐式转换为nvarchar。请使用CONVERT函数运行此查询’。”。(当我尝试直接在SSMS中插入空值时,没有问题)@Tarta,您是否按照我的建议更改了
值的类型
,还是将其保留为
对象
?提示:如果您事先不知道表名和值的类型:您做得不对我向Marc道歉,我不明白well type的意思是强类型,幸运的是我事先知道值的类型。因此,通过正确设置,它可以正常工作!非常感谢:)我尝试了这种方法,结果是:“‘不允许从数据类型sql_variant隐式转换为nvarchar。请使用CONVERT函数运行此查询’。”。(当我尝试直接在SSMS中插入空值时,没有问题)@Tarta,您是否按照我的建议更改了
值的类型
,还是将其保留为
对象
?提示:如果您事先不知道表名和值的类型:您做得不对我向Marc道歉,我不明白well type的意思是强类型,幸运的是我事先知道值的类型。因此,通过正确设置,它可以正常工作!非常感谢:)