// Example data
var valuesToDelete = new List<string> { "1", "2", "4" };
sqliteCommand.CommandText = @"delete from [test_table] where col1 in(" + string.Join(",", Enumerable.Range(0, valuesToDelete.Count).Select(z => "@para" + z)) + ")";
for (var i = 0; i < valuesToDelete.Count; i++)
{
sqliteCommand.Parameters.Add(new SqliteParameter("@para" + i, valuesToDelete[i]));
}
sqliteCommand.ExecuteNonQuery();
string.Join
用于在SQL中设置正确数量的参数,以及
for
循环旨在填充这些参数。这允许在内部使用多个值
IN
出身背景
原因:
sqliteCommand.CommandText = @"delete from [test_table] where col1 in(@para1,@para2)";
sqliteCommand.Parameters.Add(new SqliteParameter("@para1", "1"));
sqliteCommand.Parameters.Add(new SqliteParameter("@para2", "2"));
sqliteCommand.ExecuteNonQuery();
sqliteCommand.CommandText = @"delete from [test_table] where col1 in(@para1,@para2)";
sqliteCommand.Parameters.Add(new SqliteParameter("@para1", '1'));
sqliteCommand.Parameters.Add(new SqliteParameter("@para2", '2'));
sqliteCommand.ExecuteNonQuery();
不是因为后者,您意外地将参数传递为
char
而不是
string
.
感觉
正确,因为
'
'
可以在SQL中围绕字符串使用,但不能在C中使用(C使用
'
和
"
表示“string”)。
因此,在传入字符串参数时,请确保将其作为
(使用
"
烧焦
.