.NET Maui中如何实现带参数的SQLite查询并填充对象列表?
在MAUI中使用SQLite-net-pcl处理SQL参数的方法
你当前使用的是SQLite-net-pcl - 1.9.172和SQLitePCLRaw.bundle_green - 2.1.8,要替换字符串拼接的SQL查询,SQLite-net-pcl提供了几种安全的参数化查询方式,具体如下:
方法1:使用占位符?传递参数
直接在SQL语句中用?代替变量,然后将参数作为额外参数传给Query方法,底层会自动处理参数绑定:
String loc = "1290"; Locations = Database.Query<Location>("SELECT * FROM Location WHERE LocationID = ?", loc).ToList();
方法2:使用命名参数
如果查询中有多个参数,用命名参数会更清晰,SQL语句中用@参数名的形式,然后通过匿名对象传递对应值:
String loc = "1290"; Locations = Database.Query<Location>("SELECT * FROM Location WHERE LocationID = @LocationID", new { LocationID = loc }).ToList();
方法3:使用LINQ查询(更简洁安全)
SQLite-net-pcl支持直接用LINQ语法查询表,这种方式不需要手动写SQL,底层会自动生成参数化查询,完全避免字符串拼接问题:
String loc = "1290"; Locations = Database.Table<Location>().Where(location => location.LocationID == loc).ToList();
以上三种方式都能有效避免SQL注入风险,同时提升代码的可读性和可维护性,推荐优先使用LINQ方式,或者根据场景选择前两种参数化查询方式。
内容的提问来源于stack exchange,提问作者Austin
相关产品推荐
相关产品推荐

