2012-02-01 4 views
0

クライアントアプリケーションでデータベースを作成する必要があるため、ウィンドウアプリケーションのセットアップを行う必要があります。そこで私はリソースファイルに追加する.sqlファイルを使用して作成することに決めました。私のデータベースを作成する私のプログラムの最初の実行時にそのファイルを実行するオプションがあるので。.sqlファイルを実行するためにC#を使用してSQL Server Expressコマンドラインを呼び出す方法

私の友人の一人として、.sqlファイルはSQL Server Expressのコマンドラインから実行する必要があります。

SQL Server 2008 Expressコマンドラインで.sqlファイルをc#コードから実行する方法をたくさん検索しました。

Iすでにこれらの質問を読んで

コード:

FileInfo file = new FileInfo(Path.Combine(Path.GetDirectoryName(Application.ExecutablePath), "HotelReservationScript.sql"));     
StreamReader fileRead = file.OpenText(); 

string script = fileRead.ReadToEnd(); 

fileRead.Close(); 
string strConn = System.Configuration.ConfigurationManager.ConnectionStrings["MasterConnectionString"].ConnectionString; 

SqlConnection con = new SqlConnection(strConn); 
con.Open(); 

ExecuteScript(con, script); 

protected virtual void ExecuteScript(SqlConnection connection, string script) 
{ 
    string[] commandTextArray = System.Text.RegularExpressions.Regex.Split(script, "\r\n[\t ]*GO"); 

    SqlCommand _cmd = new SqlCommand(String.Empty, connection); 

    foreach (string commandText in commandTextArray) 
    { 
     if (commandText.Trim() == string.Empty) 
      continue; 

     if ((commandText.Length >= 3) && (commandText.Substring(0, 3).ToUpper() == "USE")) 
     { 
      throw new Exception("Create script contains USE statement. Please provide non database specific create scripts!"); 
     } 

     _cmd.CommandText = commandText; 
     _cmd.ExecuteNonQuery(); 
    } 
} 

エラーメッセージ:

はファイル「Cが見つかりませんでした:\ユーザー\キラン\デスクトップ\ rahhu L \ Bookster_28 \ HotelReservationSystem \ HotelReservationSystem \ binに\デバッグ\ HotelReservationScript.sql」

EDITED:

また、私はこれを試してみましたが、私は

FileInfo file = new FileInfo(Path.Combine(Path.GetDirectoryName(Environment.GetCommandLineArgs().ToString()), "HotelReservationScript.sql")); 
+3

あなたが提供したリンクで行われるのはなぜですか? –

+0

このようなことを意味しますか? http://forums.learnsqlserver.com/sqlservertopic53.aspx –

+0

エラーメッセージをもう一度見てください。ファイルが存在しないか、またはファイルが見つかりません。存在していることが確かな場合は、そのフォルダ内のプログラムを見つけるための権限がプログラムに含まれていることを確認してください。これはc#またはsqlの問題ではありません – deltree

答えて

0
FileInfo file = new FileInfo(Path.Combine(Path.GetDirectoryName(Environment.GetCommandLineArgs().ToString()), "HotelReservationScript.sql")); 

同じエラーが出ます私はプロパティウィンドウのすべてのtimrの.sqlファイルコピーのプロパティを設定する必要があるので、エラーが解決しました。

関連する問題