1

最初にデータソース、データベース名、ユーザー名、パスワードなどの詳細を収集する 2 つのフォームがあります。2 番目の形式では、実行する SQL スクリプト ファイルと接続先のデータベース名を収集します。

私が達成したいのは、選択したデータベースで sql スクリプト ファイルを実行できるようにすることです。

2 番目の形式で使用されるコードは次のようになります。

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 スクリプトをボタンをクリックして実行します。

これは可能ですか?どうすればこれを達成できますか?

どんなコメントも本当に役に立ち、感謝しています..

4

2 に答える 2

3

を使用して

using Microsoft.SqlServer.Management.Common;
using Microsoft.SqlServer.Management.Smo;

あなたは以下のようにすることができます

SqlConnection conn = new SqlConnection(sqlConnectionString);
Server server = new Server(new ServerConnection(conn));
server.ConnectionContext.ExecuteNonQuery(script);
于 2013-08-16T05:49:24.433 に答える