【发布时间】:2014-07-03 18:38:05
【问题描述】:
我有一个列表,我要从中提取内容以插入数据库。这不会是一个网络应用程序,所以我一直在做如下:
string sqlStorage = (null,"asd"),
for (int i = 1; i < listsize; )
{
sqlStorage = sqlStorage + "(null,someVariableFromLoop)";
i++
}
string connString = "Server=localhost;...........";
MySqlConnection conn = new MySqlConnection(connString);
MySqlCommand command = conn.CreateCommand();
command.CommandText = @"INSERT INTO table1 VALUES " + tempSQLStorage;
etcetc...
然而
"someVariableFromLoop"
是包含各种可怕的代码破坏字符的大量文本。引号等。
所以我查看了参数(我知道我应该执行 SQL 的方式,我知道),但是我无法找到将这些参数存储在循环中的方法。我不想每次迭代都访问数据库。我尝试了一些类似
的东西"@variable"+i.toString();
但根本无法让它工作。
那么有人知道我将如何存储参数和执行查询吗?提前致谢!
【问题讨论】:
-
我会考虑参数的第一个原因是提高安全性。如果您接受来自 UI 的输入并将其直接推送到数据库,那么您很容易受到 SQL 注入攻击。
-
假设这是 SQL Server,您应该查看表值参数或(如果它的行数非常多)SQLBulkCopy api。
-
@EricJ。 100% 同意。然而,这只是一个本地托管的脏小脚本,用于处理我拥有的一些数据。
-
@RBarryYoung 抱歉忘记添加它是 mySQL
-
你的
for循环比较奇怪,通常的写法是for (int i = 0; i < listsize; i++),而不是在循环内使用i++。
标签: c# sql loops sqlparameter