C# 参数'';已经定义了
我在网上找到了一些关于这个问题的解决方案和建议,但是,我还无法将其应用到我的解决方案中。我写了一个个人MySQL包装器,它的特点是C# 参数'';已经定义了,c#,mysql,C#,Mysql,我在网上找到了一些关于这个问题的解决方案和建议,但是,我还无法将其应用到我的解决方案中。我写了一个个人MySQL包装器,它的特点是 public async Task<IEnumerable<DatabaseFieldSet>> QueryParamsAsync(string query, string[] parameter, string[] value) { if (!IsConnected) awai
public async Task<IEnumerable<DatabaseFieldSet>> QueryParamsAsync(string query, string[] parameter,
string[] value)
{
if (!IsConnected)
await ConnectAsync();
var rows = new List<DatabaseFieldSet>();
using (var cmd = CreateCommand(query))
{
foreach (var str in parameter)
{
foreach (var val in value)
{
//cmd.Parameters.Add(str, MySqlDbType.VarChar).Value = val;
cmd.Parameters.AddWithValue(str, val);
}
}
using (var reader = await cmd.ExecuteReaderAsync())
{
uint currentRowIndex = 0;
while (await reader.ReadAsync())
{
var row = new DatabaseFieldSet(currentRowIndex);
var fields = new List<DatabaseField>();
for (var i = 0; i < reader.FieldCount; ++i)
{
var column = new DatabaseReference((uint) i);
fields.Add(new DatabaseField(reader[i], column, row));
}
row.Fields = fields;
rows.Add(row);
currentRowIndex++;
}
}
}
return rows;
}
在不同的位置,没有一个在执行时工作或抛出致命错误。我希望有人能告诉我把这句话放在哪里。你做错了。它应该像下面这样。您的double
foreach
导致了问题,并且您最终尝试再次添加相同的参数,因此出现了错误。您应该定义一个计数器变量并访问值数组中的每个项
int i = 0;
foreach (var str in parameter)
{
cmd.Parameters.AddWithValue(str, val[i]);
i++;
}
你做错了。它应该像下面这样。您的double
foreach
导致了问题,并且您最终尝试再次添加相同的参数,因此出现了错误。您应该定义一个计数器变量并访问值数组中的每个项
int i = 0;
foreach (var str in parameter)
{
cmd.Parameters.AddWithValue(str, val[i]);
i++;
}
非常感谢。我完全疯了!非常感谢。我完全疯了!