Как вызвать командную строку SQL Server Express с помощью С# для запуска файла .sql

Мне нужно настроить оконное приложение, поэтому мне нужно создать базу данных на клиентской машине. Поэтому я решил, что создам его, используя файл .sql, который я добавлю в свой файл ресурсов. Поскольку есть возможность выполнить этот файл при первом запуске моей программы, которая создаст мою базу данных.

Но, как предложил один из моих друзей, этот файл .sql следует запускать из командной строки SQL Server Express.

Я много искал, как выполнить файл .sql из кода С# в командной строке SQL Server 2008 Express.

я уже читал эти вопросы

Код:

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:\Users\Kiran\Desktop\rahhul\Bookster_28\HotelReservationSystem\HotelReservationSystem\bin\Debug\HotelReservationScript.sql»

ОТРЕДАКТИРОВАНО:

Я также пробовал это, но я получаю ту же ошибку

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

person rahularyansharma    schedule 01.02.2012    source источник
comment
Почему вы не можете сделать это так, как это сделано в ссылке, которую вы предоставили?   -  person O.O    schedule 01.02.2012
comment
Вы имеете в виду вот так? forums.learnsqlserver.com/sqlservertopic53.aspx   -  person O.O    schedule 01.02.2012
comment
взгляните еще раз на свое сообщение об ошибке. Файл не существует или не может быть найден. Если вы уверены, что он существует, проверьте, есть ли у вашей программы разрешения на его поиск в этой папке. Это не проблема С# или SQL   -  person deltree    schedule 02.02.2012
comment
Ошибка @deltree решена, так как я должен установить свойства этого файла .sql, копируя каждый timr в окне свойств.   -  person rahularyansharma    schedule 03.02.2012


Ответы (1)


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

ошибка решена, так как я должен установить свойства этого файла .sql, копировать каждый timr в окне свойств.

person rahularyansharma    schedule 03.02.2012