我正在尝试进行设置,以便将表名作为参数传递给命令文本,但是我无法使其正常工作。我四处张望,发现了这样的问题:使用C#进行MySQL的参数化查询,但是我没有任何运气。
这是相关的代码(connection == MySqlConnection包含连接字符串):
public static DataSet getData(string table)
{
DataSet returnValue = new DataSet();
try
{
MySqlCommand cmd = connection.CreateCommand();
cmd.Parameters.AddWithValue("@param1", table);
cmd.CommandText = "SELECT * FROM @param1";
connection.Open();
MySqlDataAdapter adap = new MySqlDataAdapter(cmd);
adap.Fill(returnValue);
}
catch (Exception)
{
}
finally
{
if (connection.State == ConnectionState.Open)
connection.Close();
}
return returnValue;
}
如果我更改:
cmd.CommandText = "SELECT * FROM @param1";
至:
cmd.CommandText = "SELECT * FROM " + table;
作为一种测试方法,它是可行的(我正在将XML从数据集中写入控制台以进行检查)。因此,我很确定问题只是以错误的方式使用了参数功能。有指针吗?
另外,如果我记错了,请更正我,但是使用Parameter功能应该提供针对SQL注入的完全保护,对吗?