我有2種形式,首先收集數據源,數據庫名稱,用戶名和密碼等細節。第二種形式收集要執行的sql腳本文件和要連接到的數據庫名稱。c#執行sql腳本
我想要實現的是我應該能夠在所選數據庫中執行sql腳本文件。
在第二形式中使用的代碼是這樣的:
private void comboBox1_TextChanged(object sender, EventArgs e)
{
string sel = comboBox1.SelectedItem.ToString(); //Here "sel" is the database selected
if (sel == "master")
{
comboBox2.Items.Clear();
//Selects a default file
DirectoryInfo dinfo = new DirectoryInfo(@"D:\Testpgm");
FileInfo[] Files = dinfo.GetFiles("master.sql", SearchOption.AllDirectories);
foreach (FileInfo file in Files)
{
comboBox2.Items.Add(file.Name);
}
}
else
{
comboBox2.Items.Clear();
//Selects a default file
DirectoryInfo dinfo = new DirectoryInfo(@"D:\Testpgm");
FileInfo[] Files = dinfo.GetFiles("dbscript.sql", SearchOption.AllDirectories);
foreach (FileInfo file in Files)
{
comboBox2.Items.Add(file.Name);
}
}
}
而在組合框2中使用的代碼是:
private void comboBox2_TextChanged(object sender, EventArgs e)
{
string textsel = comboBox2.SelectedItem.ToString(); //textsel is used to select the sql file selected
if (textsel == "master.sql")
{
richTextBox1.Clear();
//Read the selected sql file and display it in richtextbox
System.IO.StreamReader myFile = new System.IO.StreamReader(@"D:\Testpgm\master.sql");
string textentry = myFile.ReadToEnd();
richTextBox1.AppendText(textentry);
}
else
{
richTextBox1.Clear();
//Read the selected sql file and display it in richtextbox
System.IO.StreamReader myFile = new System.IO.StreamReader(@"D:\Testpgm\dbscript.sql");
string textentry = myFile.ReadToEnd();
richTextBox1.AppendText(textentry);
}
}
現在,我要連接到哪個我所選擇的數據庫在組合框1中,然後通過單擊按鈕,優化包含在組合框2中選擇的sql文件中的sql腳本。
這可能嗎?我怎樣才能做到這一點?
任何評論都將是很有益的,並感激..
但腳本會在選定的數據庫中執行嗎?因爲一些腳本不能在master數據庫中執行。我有兩個腳本一個用於master數據庫,另一個用於其他數據庫。如果我選擇master數據庫,它應該在master數據庫中執行。如果我選擇了其他的,那麼它應該在我選擇的數據庫中執行。通過上面的代碼,這是否可能? –
@VysakhVenugopal你需要連接到你選擇的數據庫。根據選定的數據庫構建連接字符串 – Ehsan
我對所有數據庫都有相同的連接字符串。我有一個憑證登錄master.I通常用於腳本執行。所以,在這裏我也會使用相同的,但是需要在組合框1中指定數據庫時執行腳本。 –