c# - 如何转义 system.data.sqlite 中的字符串?

标签 c# sqlite system.data.sqlite .net-4.5

我正在执行一个 SQL 查询 (system.data.SQLite),如下所示:

var color = "red";
var command = new SQLiteCommand("SELECT something FROM tabletop WHERE color = '" + color + "'", Connection);
var reader = command.ExecuteReader();

颜色变量是用户提供的文本。 如何转义此文本以防止 SQL 注入(inject)? 或者这是一种不好的做法,我应该以某种完全不同的“ protected ”方式执行查询?

最佳答案

您应该使用参数化查询:

var command = new SQLiteCommand("SELECT something FROM tabletop WHERE color = @Color", Connection);
command.Parameters.AddWithValue("Color", color);

您还可以将一组 SQLiteParameter 传递到 command.Parameters 集合中,如下所示:

SQLiteParameter[] parameters = { new SQLiteParameter("Color", color), new SQLiteParameter("Size", size) }; // etc.
command.Parameters.AddRange(parameters);

关于c# - 如何转义 system.data.sqlite 中的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25261317/

相关文章:

c# - ASP.Net Core API 响应时间过长

java - Logstash SQLite 错误 "Missing Valuefier handling for full class"

android - 重新安装Android应用程序时是否清除了sharedPreference?

xamarin - System.Data.SQLite 和 sqlite-net-pcl 的区别

sqlite - System.Data.Sqlite 和 FTS4

c# - 访问 _ViewStart.cshtml 中的 DBContext

c# - DataTable 不显示分钟和秒

c# - 退出 .NET 应用程序的通用方法

android - Android 上的 H2 数据库与 SQLite

sqlite - 如何在 SQLite 中实现重音/变音符号不敏感搜索?