Я пытаюсь создать приложение WPF для клиента, и требуется SQL-сервер. В настоящее время я использую Visual Studio для разработки всего, но раньше я никогда не использовал SQL-серверы вне веб-приложения. Я добавляю новую базу данных SQL в свой проект WPF, добавляя «базу данных на основе служб», и все работает нормально. Пока я не перенесу проект на другой компьютер, он вылетит и выдаст ошибку "System.Data.SqlClient.SqlException: база данных не найдена". Есть ли что-то, чего мне не хватает в настройке базы данных внутри моего проекта VS? Почему он работает только на моем компьютере для разработки, а не на любом другом, на который я его переношу?
Код, на котором происходит сбой:
string cn_string = Properties.Settings.Default.connection_String;
//Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\_data\db_local.mdf;Integrated Security=True
string cmdString = "SELECT * FROM tbl_Clients";
using (SqlConnection con = new SqlConnection(cn_string))
{
SqlCommand cmd = new SqlCommand(cmdString, con);
SqlDataAdapter sda = new SqlDataAdapter(cmd);
DataTable dt = new DataTable("tbl_Clients");
sda.Fill(dt);
MyDataGrid.ItemsSource = dt.DefaultView;
}
Извините за мои простые вопросы, в настоящее время я изучаю программирование в старшей школе. Спасибо за вашу помощь.
@TimRobinson Сначала я так подумал и проверил, установлен ли какой-либо SQL-сервер на моем ПК для разработки, но его нет. Когда я добавляю service-based database
в свой проект WPF в VS, он создает файл .mdf
, это файл базы данных?
вам все еще нужно установить SQL Server LocalDB на клиенте.
@vasily.sib Но он даже не установлен на моем компьютере для разработчиков, так как же я смог запустить и разработать приложение, если для него требуется SQL Server LocalDB?
Файлы .mdf — это файлы базы данных для сервера sql. Я все еще предполагаю, что часть вашей установки Visual Studio устанавливает какой-то сервер sql на вашем компьютере для разработки и что эта установка не на новом компьютере, на который вы перемещаете файлы. Сервер Sql на самом деле не предназначен для использования в качестве переносимой базы данных, которую вы будете распространять вместе с приложением. Вот для чего нужен SQLite
@LachlanMather, вы устанавливаете его с помощью Visual Studio
@TimRobinson О.К. спасибо, что объяснил мне это. Я не знал, что VS также установил SQL.
Использование базы данных на основе служб требует, чтобы вы установили службу SQL Server на компьютере, на котором вы собираетесь запускать клиентское приложение WPF.
Если вам нужна встроенная база данных, которую вы можете развернуть с помощью xcopy вместе с вашим приложением, вам следует взглянуть на SQLite. В отличие от базы данных на основе служб, которую вы создаете в Visual Studio, она полностью автономна и не требует установки каких-либо служб.
Я предполагаю, что в настоящее время на вашем компьютере установлен SQL-сервер, на котором вы занимаетесь разработкой. Когда вы переносите проект на другой компьютер, на этом компьютере, вероятно, не установлен сервер sql, поэтому возникает ошибка о невозможности найти базу данных. Я бы предложил рассмотреть использование SQLite, так как это база данных на основе файлов, которую вы можете распространять с помощью своего приложения WPF.