Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.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#6中的空和字符串插值_C#_C# 6.0 - Fatal编程技术网

C#6中的空和字符串插值

C#6中的空和字符串插值,c#,c#-6.0,C#,C# 6.0,我正在使用新的C#6.0特性字符串插值来生成SQL语句 $@"INSERT INTO [dbo].[TableName]([Column1], [Column2]) Values({item.property1}, {item.property2})"; 如果属性为null,则生成的SQL如下 INSERT INTO [dbo].[TableName]([Column1], [Column2]) Values(,) 这会导致一个错误。(不正确的SQL)。 我需要Null而不是空的空格。我能

我正在使用新的C#6.0特性字符串插值来生成SQL语句

$@"INSERT INTO [dbo].[TableName]([Column1], [Column2]) Values({item.property1}, {item.property2})";
如果属性为null,则生成的SQL如下

INSERT INTO [dbo].[TableName]([Column1], [Column2]) Values(,)
这会导致一个错误。(不正确的SQL)。
我需要Null而不是空的空格。我能以某种方式实现这一点吗?

{Convert.ToString(item.property1)?“NULL”}
应该可以做到。这仍然是错误的,因为您需要非常特定的格式才能正确地生成SQL。您可以自己解决格式化问题

注释中已经给出了常见的SQL注入免责声明。这种方法是无法解决的。您需要扔掉它。

{Convert.ToString(item.property1)?“NULL”}
应该这样做。这仍然是错误的,因为您需要非常特定的格式才能正确地生成SQL。您可以自己解决格式化问题


注释中已经给出了常见的SQL注入免责声明。这种方法是无法解决的。您需要扔掉它。

不要介意错误的语法,使用SQL连接是一个非常糟糕的主意,它会让您面临注入攻击。改为使用参数化查询,例如
值(@param1,@param2)
{item.property1???“Null”}目前,请务必注意安全性,因为这样做非常简单,而且可以解决启动--
SqlParameter.Value=(object)对象的问题??DBNull.Value
将做正确的事情。@失望。这不仅仅是SQL注入。它还涉及对空值的适当处理。或日期。或字符串。或者在字符串中加上撇号。或切换到参数,这些问题就更容易解决。参数化的问题不仅仅是安全问题。它们解决了您试图解决的问题,比您在短期内遇到的问题要好得多。不要介意错误的语法,使用SQL串联是一个非常糟糕的主意,它会让您面临注入攻击。改为使用参数化查询,例如
值(@param1,@param2)
{item.property1???“Null”}目前,请务必注意安全性,因为这样做非常简单,而且可以解决启动--
SqlParameter.Value=(object)对象的问题??DBNull.Value
将做正确的事情。@失望。这不仅仅是SQL注入。它还涉及对空值的适当处理。或日期。或字符串。或者在字符串中加上撇号。或切换到参数,这些问题就更容易解决。参数化的问题不仅仅是安全问题。它们解决了您试图解决的问题,比您在短期内遇到的问题要好得多。是的,只要属性中没有一个是字符串或
DateTime
bool
,就可以正常工作。解决所有这些问题的同时仍然顽固地拒绝使用
SqlParameter
,这是留给读者的一个练习……是的,只要没有任何属性是字符串或
DateTime
bool
,就可以了。在顽固拒绝使用
SqlParameter
的情况下修复所有这些问题,留给读者作为练习。。。