(MySQL Connector/Net を使用して) MySQL テーブルを切り捨てようとすると例外が発生するのはなぜですか? パラメータでテーブル名を指定しようとしています。
これは私が実行しているコードです:
var connectionString = "Server="+_server+";Uid="+_user+";Pwd="+_password+";Database="+_database+";";
try
{
using (var conn = new MySqlConnection(connectionString))
{
conn.Open();
const string sql = "TRUNCATE TABLE @tablename"; // also tried with TRUNCATE @tablename
var cmd = new MySqlCommand(sql, conn);
cmd.Parameters.AddWithValue("@tablename", "test");
cmd.ExecuteNonQuery();
conn.Close();
}
}
catch (MySqlException ex)
{
Console.WriteLine(ex.ToString());
}
そして、これは例外です:
MySql.Data.MySqlClient.MySqlException (0x80004005): SQL 構文にエラーがあります。1 行目の「test」付近で使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。
たとえば、選択クエリを試してみると、問題はありません。これは正常に実行され、正しいデータが返されます。
conn.Open();
const string sql = "SELECT body FROM test WHERE id=@pid";
var cmd = new MySqlCommand(sql, conn);
cmd.Parameters.AddWithValue("@pid", 1);
cmd.ExecuteScalar();
conn.Close();