c# - 使用 C# npgsql 转义 SQL 查询的许多值
问题描述
给定 SQL 查询示例,例如下面的一个和 C# npgsql lib/driver,如果您希望将值转换为可用于组装最终 SQL 的字符串(转义 SQL 值),您会建议如何构建最终 SQL 查询无需担心 SQL 注入。
样本查询
INSERT INTO table1 (col1, col2, col3) VALUES
(12, 'aaa', '2020-04-06T12:00Z')
,(13, 'bbb', '2020-04-06T12:01Z')
,(14, 'ccc', '2020-04-06T12:02Z')
-- ... (typically few dozens, max few thousands rows to upsert)
ON CONFLICT ON CONSTRAINT table1_pkey DO UPDATE SET col2 = EXCLUDED.col2, col3 = EXCLUDED.col3;
对于不包含多行的查询(VALUES 和 ON CONFLICT 之间的部分),可以使用带有命名参数的 NpgsqlCommandBuilder。但是在这种情况下,命名参数的数量可能会非常高,并且无论如何都必须动态创建原始模板。因此,我正在寻找具有此签名的接近伪方法的东西:
string PgsqlEscape<T>(T value);
PgsqlEscape("aaa") == "'aaa'"
PgsqlEscape(DateTimeOffset.UtcNow) == "'2020-04-06T12:01:45.784Z'"
PgsqlEscape(false) == "false"
解决方案
推荐阅读
- php - wkhtmltoimage 的参数列表太长错误
- nsq - NSQ 无法收到消息
- javascript - 正则表达式只允许字母,没有特殊字符,开头没有空格
- java - Java项目的规范项目布局?
- c# - C# 中的内部方法 System.Double.IsNegative() 是什么?
- fabricjs - Fabric Js requestRenderAll() 方法与 renderAll() 方法
- javascript - 收到错误 TypeError: color.charAt is not a function in C:/...../node_modules/@material-ui/core/styles/colorManipulator.js:148
- json - pickerView 在 Swift 5 代码中使用 SwiftyJSON 加载从 Alamofire 4.8.2 获取的 JSON 数据失败
- yii2 - 如何以另一种风格制作 SideNav 的活动项?
- typo3 - 级联删除TYPO3内联记录不起作用