【发布时间】:2012-05-06 00:55:11
【问题描述】:
我需要创建一个应用程序,给定一些 CSV 形式的用户输入,我需要将此 CSV 解析并生成多种格式。其中一种格式是针对 CSV 的每一行的一系列 SQL INSERT 语句(作为字符串)。
(此时您可以假设我已经将 CSV 解析为值列表或其他内容,所以这不是问题的重点)
鉴于此输入可能包含漏洞,我希望生成经过验证和清理的 INSERT 语句。
我熟悉创建 SqlCommand 对象并向其参数列表添加值,但查看 a similar question 它似乎并没有按我希望的方式工作。
那么有没有一种方法可以按照我需要的方式生成经过清理的 SQL 语句作为字符串?
编辑:这是我想做的一个例子。
CSV:
id,name,country
1,Alice,France
2,Bob,Austria
3,Carol,Germany
SQL:
...
INSERT INTO Users (id, name, country) VALUES (1, 'Alice', 'France');
INSERT INTO Users (id, name, country) VALUES (2, 'Bob', 'Austria');
INSERT INTO Users (id, name, country) VALUES (3, 'Carol', 'Germany');
...
由于 CSV 中没有给出数据类型,因此应用程序也必须确定这一点。
【问题讨论】:
-
该问题的答案有什么问题?为什么它们不适合你?
-
向我们展示:你做了什么,你得到了什么,你想得到什么
-
您应该向我们展示一个示例
Insert及其字段名称/类型和值。 -
我已经包含了一个编辑。这更有意义吗?还应该有一个 CREATE TABLE 语句,但我没有打扰它。
-
@Oded:我认为问题在于丹尼尔不想运行插入,而是显示/输出/保存它们。所以使用 SqlCommand 参数是不好的,因为你没有看到生成的 SQL。
标签: c# sql sql-injection sqlcommand sqlparameter