2012-03-13 154 views
1

我試圖通過C#創建一個數據庫,而不使用SMO,這有可能嗎?!我目前有這個,但我99%是錯的;有沒有辦法在MYSQL中創建數據庫,而不使用SMO在C#

connectionString2 = "SERVER=" + server + ";" + "DATABASE=master;" 
          + "UID=" + uid + ";" + "PASSWORD=" + password + ";" 

this.OpenConnection(); //Which opens the above connection 

// The Lines array has stored the sql statements to create the databse 
// and tables for that database 
foreach (string line in lines) 
{ 
    create_database += line; 
} 
MySqlCommand cmd = new MySqlCommand(create_database, connection2); 
cmd.ExecuteNonQuery(); 

實際上是否可以在不使用SMO的情況下做到這一點?

+2

不確定你在說什麼類型的數據庫服務器。 SMO是MSSQL,但MySsqlCommand是MySQL ... – Sascha 2012-03-13 18:25:53

+0

對不起,Sascha,標題錯誤! – r0bb077 2012-03-13 18:29:01

+0

刪除我MSSQL的答案 – Sascha 2012-03-13 18:31:35

回答

1

您必須像在示例中那樣使用MySqlCommand。

MySqlCommand cmd = new MySqlCommand("CREATE DATABASE YAYNEWDATABASE;", connection2); 
connection2.Open(); 
cmd.ExecuteNonQuery(); 
connection2.Close(); 

另外,如果你打算做大量的修改,我建議嘗試像Manatee的工具來處理你的數據庫創建/遷移作爲構建腳本的一部分。這對你正在做的事情做了很多假設,但是知道它並沒有什麼壞處。

這增加了類似於軌道到.net的遷移。

{ 
    up: "CREATE TABLE Orders (ID {pk}, OrderNumber {string} NOT NULL, SubTotal {money})", 
    down: "DROP TABLE Orders" 
} 
+0

謝謝!我已經創建並將數據庫導出到一個sql文件中,是否有將它導入某個字符串變量以創建一個長SQL查詢? – r0bb077 2012-03-13 18:57:00

+0

不是默認情況下,但它不應該很難用一些mysql命令。您可以在show tables describe table中運行一個foreach字符串,並在適當的位置替換一些數據類型{string}和{pk}。 – sclarson 2012-03-13 19:04:29

0

你可能會使用這樣的:

var connection = new MySqlConnection("Data Source=server;UserId=root;PWD=pass;"); 
var command = new MySqlCommand("CREATE DATABASE FancyDatabase;", connection); 
connection.Open(); 
command.ExecuteNonQuery(); 
connection.Close(); 

注:沒有默認的數據庫,你需要擁有的權利。並且:這是未經測試的代碼,使用標準的sql功能。

相關問題