Я должен выполнить настройку для оконного приложения, поэтому мне нужно создать базу данных на клиентском компьютере.Поэтому я решил, что создам его, используя файл .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"));