将表名作为参数传递给MySqlCommand时的MySqlException

时间:2015-08-03 15:36:50

标签: c# mysql

我正在写一个非常简单的代码,无法弄清楚为什么参数不能用于我的SQL select。任何建议将不胜感激。

  1. 我有一个先前的连接/选择没有参数可以正常工作
  2. 我在MySQL工作台上尝试过选择它很好(也简化了) 这是相关的代码。 ExecuteReader语句有一个例外。
  3. 这是本地窗口的结果:

      
        
    • [MySql.Data.MySqlClient.MySqlException] {“您的SQL语法出错;请查看与您的MySQL服务器对应的手册   在''AAIT_N''附近使用正确语法的版本   1“} MySql.Data.MySqlClient.MySqlException
    •   
    MySqlConnection conn = new MySqlConnection(connString);
    MySqlCommand cmd;
    conn.Open();
    try
       {
         cmd = conn.CreateCommand();
         cmd.CommandText = "SELECT * from @p ";  
         cmd.Parameters.AddWithValue("@p", sym);
         string wait = Console.ReadLine();
         MySqlDataReader myresults = cmd.ExecuteReader();   <=== Throws an exception
         if (myresults.HasRows)
    etc.
    

2 个答案:

答案 0 :(得分:1)

不,您不能将表名作为参数传递。相反,你可以这样做

\app\code\local\muz\Worldman\controllers\Adminhtml\WorldmanController.php

答案 1 :(得分:0)

我认为你不能使用表名作为参数。

MySqlConnection conn = new MySqlConnection(connString);
MySqlCommand cmd;
conn.Open();
try
   {
     cmd = conn.CreateCommand();
     cmd.CommandText = "SELECT * from someTable where firstName = @p ";  
     cmd.Parameters.AddWithValue("@p", "yourValue");
     Console.ReadLine();
     MySqlDataReader myresults = cmd.ExecuteReader();
     if (myresults.HasRows)
etc.