4

mysql コマンドを使用してデータベースを作成しようとすると問題が発生します。私が使用しているコードは次のとおりです。

using (MySqlConnection con = connect_db())
{
    con.Open();

    MySqlCommand cmd = new MySqlCommand("CREATE DATABASE @name;", con);

    cmd.Parameters.AddWithValue("@name", "fancydb");

    try
    {
        cmd.ExecuteNonQuery();
    }
    catch (Exception exc)
    {                   
        return;
    }
    cmd.Dispose();
    con.Close();
    con.Dispose();
}

このコードを実行しようとすると、常にエラーが発生します。

「fancydb」付近の mysql 構文のエラー

しかし、次のようにコマンドに名前を入れると、"CREATE DATABASE facnydb;"機能します。パラメータを使用しようとしたときにのみエラーが発生するのはなぜですか?

4

4 に答える 4

3

create-statement は data-manipulation-statement ではありません。パラメータは、そのような種類の操作でのみ許可されます。create-statement は data-definition-statement です。

于 2013-05-27T10:25:35.037 に答える
1

SqlCommand パラメータは、データ定義言語操作ではなく、データ操作言語操作でサポートされています。

データ操作言語 =

SELECT ... FROM ... WHERE ...
INSERT INTO ... VALUES ...
UPDATE ... SET ... WHERE ...
DELETE FROM ... WHERE ...

データ定義言語 =

CREATE TABLE ... 
DROP TABLE ... ;
ALTER TABLE ... ADD ... INTEGER;
于 2013-05-27T10:27:05.387 に答える