2011-07-14 141 views
1

假設我有一個myTest.sql腳本,它包含數千個「create table blahblah」語句。如何創建一段C#.NET腳本讓MySql服務器執行MySql腳本?

myTest.sql:

CREATE TABLE A; 
CREATE TABLE A1; 
.... 
CREATE TABLE A1000; 

什麼我試着去實現的是讓一個C#腳本來強制MySQL服務器執行myTest.sql文件,而不是做

using (MySqlConnection cn = new MySqlConnection(ConectionString)) 
    { 
    MySqlCommand newCmd = new MySqlCommand("create statement here 1", cn); 
    cn.Open(); 
    newCmd.ExecuteNonQuery(); 
    cn.Close(); 
    }  

我不想重複1000次或for循環這樣的事情。感謝所有幫助,請原諒我的語法問題。

回答

2

您可以將myTest.sql文件加載到字符串中並將其傳遞給MySqlCommand。

string myTestSql = IO.File.ReadAllText("myTest.sql"); 
... 
MySqlCommand newCmd = new MySqlCommand(myTestSql, cn); 

只要MySQL接受以分號分隔的命令,就應該工作。

+0

Thx安迪!我應該使用哪一個?的ExecuteNonQuery? – user758360

+0

解決。 THX DUDE – user758360

0

你當然不必每次都打開和關閉連接,但如果你一次一個地運行這些連接並查看結果以確保語句成功完成,那將是最乾淨的。不幸的是,如果您運行一個包含1000條語句的巨大聲明,並且失敗了,那麼您無法輕鬆確定哪些步驟是成功的,哪些步驟必須重複。

+0

Thx scwagner!這是真的..但現在我沒有更好的解決方案,除了表創建語句..我有其他數百創建存儲過程語句.. – user758360

0

使用this
可以使用mysql命令行外殼和與System.Process靜態方法,如果你想使用.NET/C#這樣做。

+0

Thx Tocco。但我不知道MySql命令行是一個強制安裝選項..我不能保證每個用戶都安裝了mysql命令行 – user758360

+0

我不應該知道這是一個客戶端應用程序。你有沒有嘗試使用@AndyP方法? – Tocco

+0

還沒有..想知道如何運行「newCmd」,就像調用ExecuteNonQuery或其他.. – user758360