忽略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();
}
}
}