- •Архитектура ado.Net
- •Компоненты ado.Net
- •Поставщики данных .Net Framework
- •Внутренние источники данных
- •Подключение к данным
- •Общие сведения о подключении к данным в Visual Studio
- •Создание подключений
- •Строки подключения
- •Закрытие соединений
- •Установка соединения посредством кода (ado.Net)
- •Соединение с mssql Server
- •Примеры
- •Построитель строк соединения (ado.Net) SqlConnectionStringBuilder
- •Примеры
- •Соединение с источником данных ole db
- •Примеры
- •Соединение с источником данных odbc
- •Соединение с источником данных Oracle
- •Сохранение и извлечение строк подключения
- •Изменение строки подключения
- •Редактирование жестко закодированных строк подключения
- •Открытие и закрытие подключений
- •Группировка подключений в пул
- •Транзакции
- •Подключения на этапе разработки в обозревателе серверов/обозревателе баз данных
- •Хранение данных в наборах данных
- •Взаимодействие с базой данных через объект DataSet
- •Класс DataSet
- •Сравнение типизированных и нетипизированных наборов данных
- •Доступ к данным в типизированных и нетипизированных наборах данных
- •Зависимость от регистра в наборе данных
- •Навигация по записям в наборах данных
- •Наборы данных и xml
- •Ограничения
- •Создание объекта DataTable
- •Пример создания таблицы с несколькими столбцами
- •Ограничения DataTable
- •События DataTable
- •Общие сведения об адаптере таблиц
- •Связанная схема объекта DataTable
- •Команды обновления TableAdapter
- •Запросы адаптера таблиц
- •Свойство ClearBeforeFill
- •Обновление источников данных с помощью объектов DataAdapter (ado.Net)
- •Столбцы AutoIncrement
- •Методы и свойства TableAdapter
- •Метод обновления TableAdapter
- •Методы GenerateDbDirectMethods адаптера таблицы
- •Создание запросов TableAdapter.
- •Для добавления запроса в TableAdapter с помощью Конструктора наборов данных:
- •Создание запроса непосредственно на форме в приложении Windows
- •Для добавления запроса в TableAdapter с помощью диалогового окна "Критерии поиска":
- •Редактировании запроса TableAdapter
- •Мастер настройки запроса адаптера таблицы
- •Запуск мастера настройки запросов адаптеров таблиц
- •Выбор подключения к данным
- •Сохранение строки подключения в файле конфигурации приложения
- •Использование инструкций sql
- •Создание новых хранимых процедур
- •Использование существующих хранимых процедур
- •Просмотр результатов работы мастера
- •Создание DataReader(ado.Net)
- •Навигация в объектах DataTableReader
- •Выбор между DataReader или DataSet
- •Окно Источники данных
- •Открытие окна источников данных
- •Заполнение окна источников данных
- •Создание элементов управления с привязкой данных
- •Создание элемента управления с привязкой данных, отображающего связанные записи
- •Команды, доступные в окне источников данных
- •Выбор типа источника данных
- •Выбор подключения к данным.
- •Сохранение строки подключения в файле конфигурации приложения
- •Выбор объектов базы данных
- •Выбор таблиц для кэширования (Visual Studio 2008 sp1)
- •Добавление веб-ссылки
- •Выбор объекта, к которому нужно осуществить привязку
- •Конструктор наборов данных
- •Создание объектов на рабочей поверхности конструктора
- •Создание набора данных
- •Создание набора данных с помощью мастера конфигурации источников данных
- •Создание набора данных с помощью конструктора наборов данных
- •Программные способы создания набора данных
- •Примеры
- •Связанные таблицы и объекты DataRelation
- •Отношения в наборах данных
- •Члены объекта DataRelation
- •ОбъектыDataRelationи ограничения
- •Правила целостности данных
- •Отношения, используемые только для ограничений
- •Навигация в DataRelations (ado.Net)
- •Заполнение набора данных
- •Заполнение набора данных с помощью адаптера таблицы TableAdapter
- •Заполнение набора данных с помощью адаптера данных DataAdapter
- •Редактирование данных в приложении
- •Вставка новой записи в типизированный набор данных
- •Вставка новой записи в нетипизированный набор данных
- •Редактирование строк в объекте DataTable
- •Поиск строки в типизированном наборе данных по известному значению первичного ключа
- •Поиск строк на основе значений в любом столбце
- •Редактирование записей в типизированном наборе данных (индекс строки неизвестен)
- •Редактирование записей в нетипизированных наборах данных (индекс строки неизвестен)
- •Редактирование строки в DataTable по известому индексу строки в типизированном наборе
- •Редактирование строки в DataTable по известому индексу строки в нетипизированном наборе
- •Удаление строк из объекта DataTable
- •Чтобы удалить записи из таблицы данных, выполните следующие действия:
- •Общие сведения о сохранении данных в наборах данных
- •Двухэтапные обновления
- •Слияние наборов данных
- •Ограничения на обновление
- •Ошибки при обновлении наборов данных
- •Ведение записей об изменениях
- •Свойство RowState
- •Перечисление DataRowVersion
- •Получение измененных записей
- •Внесение изменений в набор данных
- •Проверка данных
- •Как обновление передается источнику данных
- •Передача параметров
- •Обновление связанных таблиц
- •Сохранение данных с помощью методов dbDirect адаптера таблицы
- •Вставка новых записей в базу данных
- •Вставка новых записей с помощью адаптеров таблиц
- •Для вставки новых записей в базу данных с помощью метода TableAdapter.Update:
- •Вставка новых записей в базу данных с помощью метода TableAdapter.Insert:
- •Обновление данных на форме с помощью адаптера таблицы
- •Обновление двух связанных таблиц в наборе данных с помощью TableAdapter
- •Взаимодействие с базой данных через команды Вставка новых записей с помощью командных объектов
- •Объект DataView (ado.Net) DataView - класс
- •Создание объекта DataView на основе DataTable
- •DataTable.DefaultView - свойство
- •Примеры
- •DataView.RowFilter - свойство
- •Заметки
- •Примеры
- •DataView.Sort - свойство
- •Примеры
- •DataView.RowStateFilter - свойство
- •Значение свойства
- •Заметки
- •Примеры
- •DataViewкласс - примеры
- •DataView - члены
- •Конструкторы
- •Методы расширения
- •Свойства
- •События
- •Технология linq
- •Введение в технологию linq
- •Создание проекта linq
- •Процедуры добавления пространств имен и ссылок linq для платформы .Net Framework версии 3.5
- •Включение базовой функциональности linq
- •Введение в запросы linq (c#)
- •Три части операции запроса
- •Источник данных
- •Выполнение запроса Отложенное выполнение
- •Принудительное немедленное выполнение
- •Создание запросов linq на языке c#
- •Синтаксис запроса
- •Синтаксис метода
- •Смешанный синтаксис запроса и метода
- •Запрос в деталях (Руководство по программированию в c#) Что такое запрос и для чего он нужен
- •Выражение запроса
- •Переменная запроса
- •Явная и неявная типизация переменных запроса
- •Начало выражения запроса
- •Окончание выражения запроса
- •Предложение "group"
- •Предложение "select"
- •Продолжения с использованием ключевого слова "into"
- •Фильтрация, упорядочение и присоединение
- •Предложение "where"
- •Предложение "orderby"
- •Предложение "join"
- •Предложение "let"
- •Вложенные запросы в выражении запроса
- •Общие сведения о linq to DataSet
- •Запросы к наборам данных с помощью linq to DataSet
- •Многоуровневые приложения и linq to DataSet
- •Загрузка данных в DataSet
- •Запросы к одиночным таблицам (linq to DataSet)
- •Запрос к типизированным объектам DataSet
- •Универсальные методы Field и SetField (linq to DataSet)
- •Перекрестные запросы между таблицами (linq to DataSet)
- •Запросы linQtoSql
- •Общие сведения о linq to DataSet
- •Запросы к наборам данных с помощью linq to DataSet
- •Многоуровневые приложения и linq to DataSet
- •Запросы к одиночным таблицам (linq to DataSet)
- •Универсальные методы Field и SetField (linq to DataSet)
- •Создание объекта DataView (linq to DataSet)
- •Создание объекта DataView на основе запроса linq to DataSet
- •DataTableExtensions.AsDataView - метод (DataTable)
- •Примеры
- •Параметры
- •Возвращаемое значение
- •Примечание об использовании
- •Заметки
- •Фильтрация с помощью DataView (linq to DataSet)
- •Использование свойства RowFilter в контексте linq to DataSet
- •Очистка фильтра
- •Запрос к коллекции DataRowView в DataView
- •Как привязать объект DataView к элементу управления Windows Forms DataGridView
- •Соединение элемента управления DataGridView с объектом DataView
- •Производительность DataView
- •Механизм кэширования asp.Net
- •Связывание с данными и linq to DataSet
- •Приступая к работе (linq to sql)
- •Модель объектов linq to sql
- •Классы сущностей и баз данных linq to sql
- •Атрибут DatabaseAttribute
- •Атрибут TableAttribute
- •Атрибут ColumnAttribute
- •Сопоставление связи базы данных (linq to sql)
- •Хранимые процедуры баз данных и методы linq to sql.
- •Атрибут FunctionAttribute
- •Атрибут ParameterAttribute
- •Атрибут ResultTypeAttribute
- •Атрибут DataAttribute
- •Реляционный конструктор объектов
- •Открытие реляционного конструктора объектов
- •Создание и конфигурирование DataContext
- •Создание классов сущностей, которые сопоставляются таблицам бд или представлениям
- •Создание Object Data Source (Источника данных об объекте) и отображение данных на форме
- •Создание методов DataContext, которые вызывают сохраненные процедуры и функции
- •Конфигурирование Поведения обновления Класса сущностей
- •Как соединиться с базой данных (linq to sql)
- •Типичные действия по использованию linq to sql
- •Создание модели объектов
- •Запросы linQtoSql
- •Вставка
- •Обновление
- •Удаление
- •Непосредственное выполнение команд sql(linQtoSql)
- •Стратегии доступа к данным
- •Обработка событий DataTable (ado.Net)
- •Дополнительные связанные события
- •Последовательность операций
- •Метод Load
- •Удаление DataRow
- •Отключение ограничений при заполнении набора данных (Практическое руководство)
- •Чтобы приостановить ограничения на обновления программно
- •Чтобы приостановить ограничения на обновление с помощью конструктора наборов данных
- •Сведения об ошибке строки
- •Получение измененных строк (Практическое руководство).
- •Чтобы получить все измененные записи из набора данных
- •Чтобы получить все измененные записи из таблицы данных
- •Для получения всех записей, имеющих определенное состояние строки
Закрытие соединений
Рекомендуется всегда закрывать соединение после использования, чтобы обеспечить его возврат в пул. Блок Using в Visual Basic или C# автоматически удаляет соединение при выходе в коде из блока даже при наличии необработанного исключения.
Также можно использовать методы CloseилиDisposeобъекта соединения для используемого поставщика. Соединения, которые явно не закрыты, нельзя добавить или вернуть в пул. Например, соединение, которое вышло за пределы области, но явно закрыто не было, будет возвращено в пул соединений только в том случае, если был достигнут максимальный размер этого пула, а соединение еще действует.
Установка соединения посредством кода (ado.Net)
Для создания соединения с Microsoft SQL Server 7.0 или более поздней версии используется объект SqlConnectionпоставщика данных .NET Framework для SQL Server. Для соединения с источником данных OLE DB или с базой данных Microsoft SQL Server 6.xи более ранних версий используется объектOleDbConnectionпоставщика данных .NET Framework для OLE DB. Для соединения с источником данных используется объектOdbcConnectionпоставщика данных .NET Framework для ODBC. Для соединения с источником данных Oracle используется объектOracleConnectionпоставщика данных .NET Framework для Oracle. Сведения о безопасном хранении и получение строк соединения см. в разделеЗащита сведений о соединении (ADO.NET).
Соединение с mssql Server
Свойство SqlConnection.ConnectionString- возвращает или задает строку, используемую для подключения к базе данных SQL Server.
Пространство имен: System.Data.SqlClient Сборка: System.Data (в System.Data.dll)
Синтаксис
[SettingsBindableAttribute(true)]
public override string ConnectionString { get; set; }
Значение свойства
Тип: System.String. Значением по умолчанию является пустая строка.
Можно использовать новый объект SqlConnectionStringBuilder для составления допустимых строк подключения во время выполнения.
Свойство ConnectionString можно задавать только при закрытом подключении. Многие значения строки подключения имеют соответствующие свойства, доступные только для чтения. Когда задана строка подключения, эти свойства обновляются, если не обнаружена ошибка. В этом случае ни одно из свойств не обновляется.
Для подключения к локальному компьютеру следует указывать имя сервера имя "(local)". Если имя сервера не задано, будет сделана попытка установить соединение с экземпляром по умолчанию на локальном компьютере.
При сбросе ConnectionString для закрытого подключения сбрасываются все значения строки подключения (и связанные свойства), включая пароль. Например, если выполняется сброс строки подключения, содержащей "Database=AdventureWorks", и последующая установка для нее значения "Data Source=myserver;Integrated Security=true", свойство Database больше не будет иметь значение "AdventureWorks".
Сразу после установки строки подключения осуществляется ее анализ. Если при разборе строки обнаружены синтаксические ошибки, генерируется исключение среды выполнения, например ArgumentException. Другие ошибки могут быть обнаружены только при попытке открытия подключения.
Базовый формат строки подключения содержит последовательность пар "ключевое слово — значение", разделенных символами точки с запятой. Знак равенства (=) связывает каждое ключевое слово с его значением. Чтобы включить значение, содержащее символ точки с запятой, одинарной или двойной кавычки, необходимо заключить это значение в двойные кавычки. Если значение содержит как символ точки с запятой, так и символ двойной кавычки, необходимо заключить значение в одинарные кавычки. Кроме того, одинарную кавычку можно использовать, если значение начинается с символа двойной кавычки. И наоборот, если значение начинается с одинарной кавычки, можно использовать символ двойной кавычки. Если значение содержит символы как одинарных, так и двойных кавычек, то внутри него необходимо повторить два раза символ тех кавычек, в которые оно заключено.
Чтобы включить в значение строки начальные или концевые пробелы, необходимо заключить конечную строку в одинарные или двойные кавычки. Любые начальные или концевые пробелы вокруг значений, которые относятся к типу целочисленных, логических или перечислимых значений, игнорируются, даже если они заключены в кавычки. Тем не менее, пробелы сохраняются внутри ключевого слова или значения, которое является строковым литералом. При использовании платформы .NET Framework версии 1.1 или более поздней одинарные или двойные кавычки могут использоваться в строке подключения без разделителей (например, Data Source= my'Server или Data Source= my"Server), если символ кавычки не является первым или последним символом значения.
Ключевые слова не зависят от регистра символов.
В приведенной ниже таблице представлены допустимые имена для значений ключевых слов в ConnectionString.
Ключевое слово |
По умолчанию |
Свойство |
Имя приложения, |
Неприменимо |
Имя приложения, или, если оно отсутствует, '.Net SqlClient Data Provider'. |
Async |
false |
Когда задано значение true, поддерживаются асинхронные операции. Распознаваемые значения: true, false, yes и no. |
AttachDBFilename — или — extended properties — или — Initial File Name |
Неприменимо |
Имя основного файла базы данных, включая полный путь к подключаемой базе данных. AttachDBFilename поддерживается только для первичных файлов данных с расширением MDF. Если присоединение завершается неудачей, первичный файл база данных доступен только для чтения. Путь может быть абсолютным или относительным, заданным с использованием строки подстановки DataDirectory. При использовании строки подстановки DataDirectory файл базы данных должен существовать в каталоге, на который указывает строка подстановки. Примечание Имена путей удаленного сервера, HTTP и UNC не поддерживаются. Имя базы данных должно быть задано с ключевым словом database или одним из его псевдонимов, как в следующем примере: "AttachDbFileName=|DataDirectory|\data\YourDB.mdf;integrated security=true;database=YourDatabase" Если файл журнала существует в том же каталоге, что и файл базы данных, и при подключении первичного файла данных используется ключевое слово database, генерируется ошибка. В таком случае следует удалить файл журнала. После присоединения базы данных новый файл журнала будет автоматически сгенерирован по физическому пути. |
Connect Timeout — или — Connection Timeout |
15 |
Продолжительность времени ожидания подключения к серверу (в секундах) перед прекращением попытки подключения и генерацией ошибки. |
Context Connection |
false |
true, если должно быть установлено внутрипроцессное подключение к SQL Server. |
Current Language |
Неприменимо |
Имя записи языка SQL-сервера. |
Источник данных — или — Server — или — Адрес — или — Addr — или — Network Address |
Неприменимо |
Имя или сетевой адрес экземпляра SQL Server, к которому осуществляется подключение. После имени сервера может быть задан номер порта: server=tcp:servername, portnumber При задании локального экземпляра всегда используйте имя (local). Чтобы указать протокол, добавьте один из следующих префиксов: np:(local), tcp:(local), lpc:(local) Примечание ADO.NET 2.0 не поддерживает выполнение асинхронных команд через общую память для SQL Server версии 2000 или более ранней версии. Однако вместо общей памяти можно принудительно использовать TCP, прибавив префикс tcp: к имени сервера в строке подключения или задав имя сервера localhost. |
Encrypt |
false |
Если задано значение true, SQL Server использует шифрование SSL для всех данных, передаваемых между клиентом и сервером, если сервер имеет установленный сертификат. Распознаваемые значения: true, false, yes и no. |
Enlist |
'true' |
Значение true указывает, что пулер подключений SQL Server автоматически включает подключение в контекст текущей транзакции создавшего потока. |
Failover Partner |
Неприменимо |
Имя резервного сервера, на котором настроено зеркалирование базы данных. Ключевое слово Failover Partner не поддерживается платформой .NET Framework версии 1.0 или 1.1. |
Initial Catalog — или — Database |
Неприменимо |
Имя базы данных. |
Integrated Security — или — Trusted_Connection |
false |
Если задано значение false, в подключении заданы также параметры User ID и Password. Если задано значение true, для проверки подлинности используются текущие учетные данные Windows. Распознаваемые значения: true, false, yes, no и sspi (настоятельно рекомендуется), что эквивалентно true. Если ИД пользователя и пароль заданы и встроенные средства безопасности установлено значение "true", ИД пользователя и пароль будут проигнорированы, и использована встроенная безопасность. |
MultipleActiveResultSets |
false |
Если задано значение true, приложение может поддерживать несколько результирующих наборов данных (MARS). Если задано значение false, приложение должно обработать или отменить все результирующие наборы одной массовой операции, прежде чем выполнять через то же подключение другую пакетную операцию. Распознаваемые значения: true и false. Этот ключевое слово не поддерживается платформой .NET Framework версии 1.0 или 1.1. |
Network Library — или — Net |
dbmssocn |
Сетевая библиотека, используемая для установки подключения к экземпляру SQL Server. Поддерживаются следующие значения: dbnmpntw (именованные каналы) dbmsrpcn (Multiprotocol, Windows RPC) dbmsadsn (Apple Talk) dbmsgnet (VIA) dbmslpcn (общая память) dbmsspxn (IPX/SPX) dbmssocn (TCP/IP) Dbmsvinn (Banyan Vines) В системе, к которой осуществляется подключение, должна быть установлена соответствующая сетевая DLL. Если сеть не указана и используется локальный сервер (например, "." или "(local)"), используемый общей памятью. В этом примере используются сетевая библиотека Win32 Winsock TCP/IP (dbmssocn) и порт 1433.
Network Library=dbmssocn;Data Source=000.000.000.000,1433; |
Packet Size |
8192 |
Размер сетевых пакетов (в байтах), используемых при взаимодействии с экземпляром SQL Server. |
Пароль — или — Pwd |
Неприменимо |
Пароль для входа в SQL-сервер. Не рекомендуется. Чтобы обеспечить наивысший уровень безопасности, настоятельно рекомендуется использовать вместо этого ключевое слово Integrated Security или Trusted_Connection. |
Persist Security Info |
false |
Когда задано значение false или no (настоятельно рекомендуется), важные сведения (такие, как пароль) не возвращаются как часть подключения, если оно открыто или когда-либо находилось в открытом состоянии. При сбросе строки подключения сбрасываются также все ее значения, включая пароль. Распознаваемые значения: true, false, yes и no. |
Планирование |
Неприменимо |
Задает план подключения. Будет вызван объект ArgumentException, если в строке подключения также указывается следующее: партнер по обеспечению отказоустойчивости, AttachDbFileName, UserInstance = true или contextConnection = true. |
Репликация |
false |
true, если поддерживается репликация с использованием данного соединения. |
Transaction Binding |
Implicit Unbind |
Управляет связыванием подключения с присоединенной транзакцией System.Transactions. Доступны следующие значения: Transaction Binding=Implicit Unbind; Transaction Binding=Explicit Unbind; Implicit Unbind указывает, что следует отсоединять подключение от транзакции, когда она завершается. После отсоединения дополнительные запросы через это подключение выполняются в режиме автофиксации. Свойство System.Transactions.Transaction.Current не проверяется при выполнении запросов, когда транзакция активна. После завершения транзакции дополнительные запросы выполняются в режиме автофиксации. Explicit Unbind указывает, что подключение должно оставаться присоединенным к транзакции до тех пор, пока оно не будет закрыто или не будет явно вызван метод SqlConnection.TransactionEnlist(null). Исключение InvalidOperationException выбрасывается, если Transaction.Current не является присоединенной или активной транзакцией. |
TrustServerCertificate |
false |
Если задано значение true, то в случае, если для проверки доверия не выполняется обход цепочки сертификатов, для шифрования канала используется SSL. Если параметр TrustServerCertificate имеет значение true, а параметр Encrypt — false, канал не шифруется. Распознаваемые значения: true, false, yes и no. Дополнительные сведения см. в разделе Синтаксис строки соединения (ADO.NET). |
Type System Version |
Неприменимо |
Строковое значение, определяющее систему типов, ожидаемую приложением. Доступны следующие значения: Type System Version=SQL Server 2000; Type System Version=SQL Server 2005; Type System Version=SQL Server 2008; Type System Version=Latest; Если задано значение SQL Server 2000, используется система типов SQL Server 2000. При подключении к экземпляру SQL Server 2005 выполняются следующие преобразования. XML to NTEXT UDT to VARBINARY VARCHAR(MAX), NVARCHAR(MAX) и VARBINARY(MAX) с TEXT, NEXT и IMAGE соответственно. Если задано значение SQL Server 2005, используется система типов SQL Server 2005. Для текущей версии ADO.NET преобразование не выполняется. Если задано значение Latest, используется последняя версия этой пары клиент-сервер. При обновлении клиентского и серверного компонентов она автоматически обновляется. |
Идентификатор пользователя |
Неприменимо |
Учетная запись входа в SQL Server. Не рекомендуется. Чтобы обеспечить наивысший уровень безопасности, настоятельно рекомендуется использовать вместо этого ключевое слово Integrated Security или Trusted_Connection. |
User Instance |
false |
Значение, указывающее, следует ли перенаправлять подключение от используемого по умолчанию экземпляра SQL Server Express к запущенному исполняющей средой экземпляру, который выполняется с учетной записью вызывающего кода. |
Workstation ID |
Имя локального компьютера |
Имя рабочей станции, подключающейся к SQL Server. |
В приведенной ниже таблице представлены допустимые имена для значений пулинга подключений в ConnectionString. Дополнительные сведения см. в разделе Организация пулов соединений SQL Server (ADO.NET).
Name |
По умолчанию |
Свойство |
Connection Lifetime |
0 |
Когда подключение возвращается в пул, время его создания сравнивается с текущим и подключение удаляется, если его время жизни (в секундах) превышает значение, указанное в Connection Lifetime. Данный подход применяется в кластерных конфигурациях для принудительного выравнивания нагрузки между работающим и только что запущенным сервером. В случае нулевого (0) значения подключения в пуле будут иметь максимальный таймаут. |
Enlist |
'true' |
Если задано значение true, процесс, обслуживающий пул, автоматически добавляет подключение в контекст текущей транзакции создавшего потока. Распознаваемые значения: true, false, yes и no. |
Load Balance Timeout |
0 |
Минимальное время ожидания в секундах перед удалением подключения из пула. |
Max Pool Size |
100 |
Максимальное разрешенное количество подключений в пуле. |
Min Pool Size |
0 |
Минимальное разрешенное количество подключений в пуле. |
Pooling |
'true' |
Если задано значение true, объект SQLConnection удаляется из соответствующего пула или при необходимости создается и добавляется в соответствующий пул. Распознаваемые значения: true, false, yes и no. |
При задании ключевых слов или значений пулинга подключений, требующих логических значений, можно использовать yes вместо true и no вместо false. Целочисленные значения представляются в виде строк.