Как вызвать командную строку SQL Server Express, используя c # для запуска файла .sql - PullRequest
0 голосов
/ 01 февраля 2012

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

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

Я много искал, как выполнить файл .sql из кода c # в командной строке 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"));

1 Ответ

0 голосов
/ 03 февраля 2012
FileInfo file = new FileInfo(Path.Combine(Path.GetDirectoryName(Environment.GetCommandLineArgs().ToString()), "HotelReservationScript.sql"));

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

...