2013-05-27 56 views
4

我在嘗試使用mysql命令創建數據庫時遇到問題。我正在使用的代碼是;使用mysql命令創建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(); 
} 

當我嘗試運行此代碼,我總是得到一個錯誤,說我在MySQL的語法附近「fancydb」

錯誤,但是當我把這個名字在命令如:"CREATE DATABASE facnydb;"它的作品。任何人都可以向我解釋爲什麼錯誤只發生在我嘗試使用參數時?

回答

3

create-statement不是數據操縱語句。只有在這種操作中才允許參數。 create-statement是一個數據定義語句。

1

我猜想,查詢作爲

CREATE DATABASE "fancydb"; 

這是錯誤的執行。

+0

沒有!它將執行爲'CREATE DATABASE fancydb;' –

1

SqlCommand的參數都支持Data manipulation language操作不Data definition language操作。

數據操縱語言=

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

數據定義語言=

CREATE TABLE ... 
DROP TABLE ... ; 
ALTER TABLE ... ADD ... INTEGER; 
+1

到目前爲止,我已經看到了關於你能做什麼和不能做什麼的最簡單的答案。乾杯 – Noctis

0

這工作:

cmd.CommandText = "exec ('CREATE DATABASE ' + @database)"; 
cmd.Parameters.AddWithValue("@database", restoreDB); 
cmd.ExecuteNonQuery();