忽略SQL Server中插入字符串C#中的引号

忽略SQL Server中插入字符串C#中的引号,c#,sql-server,sql-insert,C#,Sql Server,Sql Insert,我无法将NULL值插入数据库中的Date列,因为我需要使用字符串变量 插入语句: string insertQuery = "INSERT INTO PersonelListesi (id, ssk_tarih) VALUES(1,'" + sskTarihi + "')"; 工作变量示例: string sskTarihi = "20201212"; 不正确的变量示例(我已经尝试过): System.Data.SqlClient.

我无法将
NULL
值插入数据库中的
Date
列,因为我需要使用字符串变量

插入语句:

string insertQuery = "INSERT INTO PersonelListesi (id, ssk_tarih) VALUES(1,'" + sskTarihi + "')";
工作变量示例:

string sskTarihi = "20201212";
不正确的变量示例(我已经尝试过):

System.Data.SqlClient.SqlException:“从字符串转换日期和/或时间时,转换失败。”

System.Data.SqlClient.SqlException:'关键字'NULL'附近的语法不正确'

System.Data.SqlClient.SqlException:'关键字'NULL'附近的语法不正确'

System.Data.SqlClient.SqlException:“从字符串转换日期和/或时间时,转换失败。”

System.Data.SqlClient.SqlException:'关键字'NULL'附近的语法不正确'

System.Data.SqlClient.SqlException:'关键字'NULL'附近的语法不正确'


我希望你明白我的意思和我需要的。我感谢你的帮助。提前感谢您的回答。:)

其他人建议,在方法驻留在类中的位置使用如下所示的参数

public static void InsertRow(int id, string ssk_tarih)
{
    using (var cn = new SqlConnection {ConnectionString = "TODO"})
    {
        using (var cmd = new SqlCommand {Connection = cn})
        {

            cmd.CommandText = "INSERT INTO PersonelListesi (id, ssk_tarih) VALUES(@id,@ssk_tarih)";


            cmd.Parameters.Add("@Id", SqlDbType.Int).Value = id;

            if (string.IsNullOrWhiteSpace(ssk_tarih))
            {
                cmd.Parameters.Add("@ssk_tarih", SqlDbType.DateTime).Value = DBNull.Value;
            }
            else
            {
                cmd.Parameters.Add("@ssk_tarih", SqlDbType.DateTime).Value = ssk_tarih;
            }

            cn.Open();

            cmd.ExecuteNonQuery();

        }
    }

}

不要费心逃避引用;很简单。对于
NULL
,指定参数值
DBNull.value
。应避免字符串串接,以免语句容易被注入。@BarbarosÖzhan和Dan,谢谢你们。欢迎兄弟
cmd.Parameters.Add(@Id),SqlDbType.DateTime)。value=Id-这应该是
SqlDbType.Int
而不是日期时间…@marc_这是我在进行复制粘贴时得到的,谢谢你指出这一点。
sskTarihi = "'NULL'";
sskTarihi = "\"'NULL'\"";
sskTarihi = "\"NULL\"";
sskTarihi = "\'NULL\'";
sskTarihi = "\"\'NULL\'\"";
public static void InsertRow(int id, string ssk_tarih)
{
    using (var cn = new SqlConnection {ConnectionString = "TODO"})
    {
        using (var cmd = new SqlCommand {Connection = cn})
        {

            cmd.CommandText = "INSERT INTO PersonelListesi (id, ssk_tarih) VALUES(@id,@ssk_tarih)";


            cmd.Parameters.Add("@Id", SqlDbType.Int).Value = id;

            if (string.IsNullOrWhiteSpace(ssk_tarih))
            {
                cmd.Parameters.Add("@ssk_tarih", SqlDbType.DateTime).Value = DBNull.Value;
            }
            else
            {
                cmd.Parameters.Add("@ssk_tarih", SqlDbType.DateTime).Value = ssk_tarih;
            }

            cn.Open();

            cmd.ExecuteNonQuery();

        }
    }

}