2012-02-01 1 views
0

클라이언트 컴퓨터에 데이터베이스를 만들 필요가 있으므로 창 응용 프로그램에 대한 설정을해야합니다. 그래서 나는 내 리소스 파일에 추가 할 파일 .sql을 사용하여 파일을 생성하기로 결정했습니다. 데이터베이스를 만들 프로그램을 처음 실행할 때 해당 파일을 실행할 수있는 옵션이 있기 때문입니다.SQL Server Express 명령 줄을 호출하여 .sql 파일을 실행하기 위해 C#을 사용하는 방법

하지만 제 친구 중 한 사람이 제안한 것처럼 .sql 파일은 SQL Server Express의 명령 줄에서 실행해야합니다.

SQL Server 2008 Express 명령 줄에서 .sql 파일을 C# 코드에서 실행하는 방법을 많이 검색했습니다.

은 이미이 질문

코드 :

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 파일을 찾을 수 없습니다 : \ 사용자 \ Kiran \ Desktop \ rahhu L \ Bookster_28 \ HotelReservationSystem \ HotelReservationSystem \ 빈 \ 디버그 \ HotelReservationScript.sql '

편집 : 나는 또한이 시도

하지만이 같은 오류를 얻을

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")); 

.sql 파일의 속성을 속성 창에서 timr마다 설정해야하므로 오류가 해결되었습니다.