Создание подключения

Данное руководство устарело. Актуальное руководство: по ADO.NET и работе с базами данных в .NET 6

Последнее обновление: 31.10.2015

Чтобы подключаться к базе данных, нам необходимо создать и использовать объект 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("Подключение закрыто...");

Консольный вывод в моем случае:

SqlConnection и его свойства

Возможные ошибки и их решение

При подключении к базе данных может столкнуться с рядом ошибок, одной из наиболее распространенных является следующая:

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 вообще не установлен.

Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850