Данное руководство устарело. Актуальное руководство: по ADO.NET и работе с базами данных в .NET 6
Чтобы подключаться к базе данных, нам необходимо создать и использовать объект SqlConnection:
using System; using System.Data.SqlClient; namespace AdoNetConsoleApp { class Program { static void Main(string[] args) { string connectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=usersdb;Integrated Security=True"; // Создание подключения SqlConnection connection = new SqlConnection(connectionString); try { // Открываем подключение connection.Open(); Console.WriteLine("Подключение открыто"); } catch (SqlException ex) { Console.WriteLine(ex.Message); } finally { // закрываем подключение connection.Close(); Console.WriteLine("Подключение закрыто..."); } Console.Read(); } } }
В конструктор объекту SqlConnection передается строка подключения, которая инициализирует объект. Чтобы использовать этот объект и
подключаться к базе данных, мы должны выполнить его метод Open()
, а после завершения работы с базой данных нам надо вызвать метод Close()
для закрытия подключения. В случае возникновения ошибок закрытие подключения происходит в блоке finally.
В качестве альтернативного метода можно использовать конструкцию using, которая автоматически закрывает подключение:
static void Main(string[] args) { string connectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=usersdb;Integrated Security=True"; using (SqlConnection connection = new SqlConnection(connectionString)) { connection.Open(); Console.WriteLine("Подключение открыто"); } Console.WriteLine("Подключение закрыто..."); Console.Read(); }
Для создания асинхронного подключения необходимо использовать асинхронный метод OpenAsync():
class Program { static void Main(string[] args) { ConnectWithDB().GetAwaiter(); } private static async Task ConnectWithDB() { string connectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=usersdb;Integrated Security=True"; using (SqlConnection connection = new SqlConnection(connectionString)) { await connection.OpenAsync(); Console.WriteLine("Подключение открыто"); } Console.WriteLine("Подключение закрыто..."); } }
Объект SqlConnection обладает рядом свойств, которые позволяют получить информацию о подключении:
string connectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=usersdb;Integrated Security=True"; using (SqlConnection connection = new SqlConnection(connectionString)) { connection.Open(); Console.WriteLine("Подключение открыто"); // Вывод информации о подключении Console.WriteLine("Свойства подключения:"); Console.WriteLine("\tСтрока подключения: {0}", connection.ConnectionString); Console.WriteLine("\tБаза данных: {0}", connection.Database); Console.WriteLine("\tСервер: {0}", connection.DataSource); Console.WriteLine("\tВерсия сервера: {0}", connection.ServerVersion); Console.WriteLine("\tСостояние: {0}", connection.State); Console.WriteLine("\tWorkstationld: {0}", connection.WorkstationId); } Console.WriteLine("Подключение закрыто...");
Консольный вывод в моем случае:
При подключении к базе данных может столкнуться с рядом ошибок, одной из наиболее распространенных является следующая:
Unhandled Exception: System.ArgumentException: Keyword not supported...
Данная ошибка вызвана из-за неправильного указания параметров строки подключения, причем неважно, как мы определяем строку подключения - в коде или в файле конфигурации. В сообщении об ошибке, как привило, говорится, какой параметр указан неправильно, и в этом случае его надо исправить.
Еще одна распространенная ошибка говорит о том, что данной базы нет или по крайней мере нет подобной базы данных для текущего пользователя:
Cannot open database "название базы данных" requested by the login. The login failed. Login failed for user 'название_пользователя'
В этом случае надо убедиться, что на сервере есть база данных с таким названием, а если есть, то проверить, есть ли доступ для данного пользователя к этой бд.
И еще одна часто встречающаяся ошибка:
A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible...
В этом случае, как правило, SQL Server не запущен. И его надо запустить или перезапустить, через панель служб.
Также может быть, что в строке подключения указано неправильное имя сервера, либо MS SQL Server вообще не установлен.