C# 要在from子句中使用的OleDb参数
我有以下代码来读取CSV文件并填充数据表:C# 要在from子句中使用的OleDb参数,c#,.net,csv,oledb,C#,.net,Csv,Oledb,我有以下代码来读取CSV文件并填充数据表: string sql = @"SELECT * FROM [" + fileName + "]"; using (OleDbConnection connection = new OleDbConnection( @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + pathOnly + ";Extended Pro
string sql = @"SELECT * FROM [" + fileName + "]";
using (OleDbConnection connection = new OleDbConnection(
@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + pathOnly +
";Extended Properties=\"Text;HDR=" + header + "\""))
{
using (OleDbCommand command = new OleDbCommand(sql, connection))
{
using (OleDbDataAdapter adapter = new OleDbDataAdapter(command))
{
DataTable dataTable = new DataTable();
dataTable.Locale = CultureInfo.CurrentCulture;
adapter.Fill(dataTable);
return dataTable;
}
}
}
这个被剪掉的代码效果很好,但代码分析对此表示不满()。应该更改生成查询字符串的方式,以便使用参数
我正试图解决这个问题,但通常的OLEDB参数用法似乎不起作用。查询是使用参数名称而不是其值生成的:
string sql = @"SELECT * FROM @param";
using (OleDbConnection connection = new OleDbConnection(
@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + pathOnly +
";Extended Properties=\"Text;HDR=" + header + "\""))
{
using (OleDbCommand command = new OleDbCommand(sql, connection))
{
command.Parameters.Add(new OleDbParameter("@param", fileName));
using (OleDbDataAdapter adapter = new OleDbDataAdapter(command))
{
DataTable dataTable = new DataTable();
dataTable.Locale = CultureInfo.CurrentCulture;
adapter.Fill(dataTable);
return dataTable;
}
}
}
有什么想法吗 代码分析并非无所不知。此查询只能动态生成,因为查询的
FROM
部分无法参数化。抑制警告--您确实“查看了查询中的安全漏洞”。(您可能需要再次检查如何转义文件名,尽管--[
和]
是合法字符,因此至少需要转义]
。我不确定喷气式飞机驾驶员的规则。)通常情况下,表名不允许作为参数使用,您可以看到链接。我认为要使用参数,您需要将它们传递到存储过程中。