Керівництво для початківців по використанню sql server з c #, c # (c sharp), статті,

Передісторія

Використання коду

Я не включав приклад програми, тому що код, який приводиться в статті, може бути використаний в реальності і повинен працювати без проблем. Також у всій статті я буду посилатися на SQL Server, MSDE - це вільна версія SQL Server, яка не надає деяких графічних інструментів і має кілька інших обмежень, наприклад, розмір бази даних. Цей код повинен працювати на обох без проблем.

Встановлюємо улюблене з'єднання

Насправді немає ніякої магії вуду для створення з'єднання з SQL-сервером, допускаючи, що він був правильно встановлений, - це я не буду розглядати в даній статті. NET дозволяє дуже легко працювати з SQL. Першим кроком є ​​додавання простору імен клієнта SQL:

Потім ми створюємо SqlConnection і вказуємо рядок підключення.

Примітка: розрив в рядку з'єднання служить тільки для форматування

SqlConnection.ConnectionString

Рядок підключення - це просто набір опцій і їх значень, які вказують як і куди підключатися. Поки я вивчав довідкові файли Visual Studio .NET, я виявив кілька полів, що мають багато імен, але працюють однаково, як, наприклад, Password і Pwd взаємозамінні. Я не включав всіх опцій для SqlConnection.ConnectionString в цей раз. Як тільки я отримаю шанс перевірити і використовувати інші опції, я включу їх в статтю.

User ID використовується для аутентифікації засобами SQL. У своїй практиці я зазвичай ігнорую цей параметр, використовуючи Trusted_Connection або аутентифікацію засобами Windows. Якщо з ім'ям користувача пов'язаний пароль, використовується Password або Pwd.

Password або Pwd

"Password = validpassword;"
-або-
"Pwd = validpassword;"

Data Source, або Server, або Address, або Addr, або Network Address

"Data Source = localhost;"
-або-
"Server = localhost;"
-або-
"Address = localhost;"
-або-
"Addr = localhost;"
-або-
"Network Address = localhost;"

Integrated Sercurity або Trusted_Connection

Integrated Security і Trusted_Connection використовуються для вказівки, чи є з'єднання безпечним, наприклад, як аутентифікація засобами Windows або SSPI. Розпізнавані значення - це true. false і sspi. Відповідно до документації MSDN, sspi є еквівалентом true. Примітка: Я не знаю, як працює SSPI. або як впливає на з'єднання.

Connect Timeout або Connection Timeout

Ці опції визначають час очікування відповіді сервера до генерації помилки в секундах. Заводський параметр 15 (секунд).

"Connect Timeout = 10;"
-або-
"Connection Timeout = 10;"

Initial Catalog або Database

Initial Catalog і Database - це просто два способи вибору бази даних, пов'язаної із з'єднанням.

"Inital Catalog = main;"
-або-
"Database = main;"

Network Library або Net

Опція Network Library важлива, якщо ви зв'язуєтеся з сервером по протоколу, відмінному від TCP / IP. Значення за замовчуванням для Network Library - це dbmssocn або TCP / IP. Доступні такі опції: dbnmpntw (Named Pipes, іменовані канали), dbmsrpcn (Multiprotocol), dbmsadsn (Apple Talk), dbmsgnet (VIA), dbmsipcn (Shared Memory, колективна пам'ять), dbmsspxn (IPX / SPX) і dbmssocn (TCP / IP ). І, як і раніше, Network Library і Net можуть використовуватися як взаємозамінні. Примітка: Відповідний мережевий протокол повинен бути установленн в системі, до якої ви підключаєтеся.

SqlConnection.Open ()

Це остання частина установки з'єднання, і в простому випадку виконується наступним кодом (не забудьте переконатися, що ваше з'єднання отримало рядок підключення раніше):

SqlConnection.Open () - це void-функция, яка не повертає помилок, а викидає виключення, тому не забувайте поміщати її в try / catch блок, щоб запобігти вибуху програми на фронті користувача.

огляд команд

Команди SQL, ймовірно, найбільш складна частина використання бази даних SQL, але середовище .NET надає обгортки, які чудово все роблять, позбавляючи від більшої частини роботи.

SqlCommand

Є ідеї, для чого використовується SqlCommand. Якщо ви припустили, що він використовується для команд SQL, то ви абсолютно праві. SqlCommand вимагає як мінімум двох речей для функціонування. Рядок команди і з'єднання. Для початку розглянемо вимогу з'єднання. Існує два шляхи вказівки з'єднання, обидва проілюстровані нижче:

Рядок команди також може бути вказана двома способами через властивість SqlCommand.CommandText. Тепер давайте подивимося на наш перший SqlCommand. Щоб залишити приклад простим, це буде проста команда INSERT.

Тепер розглянемо значення. table - це просто таблиця в базі даних. Column1 і Column2 - всього лише назви колонок. У секції значень я показав, як додавати типи string і int. Значення рядка поміщається в одинарні лапки, а ціле, як ви бачите, передається як є. Останній крок - виконання команди з допомогою:

SqlDataReader

Вставка даних - це добре, але отримання їх назад так само важливо. Ось тепер на сцену виходить SqlDataReader. "Пристрій для читання даних" - це не все, що вам знадобиться; крім нього потрібен ще й SqlCommand. Наступний код демонструє, як налаштувати і виконати простий reader:

SqlParameter

Існує маленька проблема при використанні SqlCommand продемонстрованим мною способом - він залишає велику дірку в безпеці. Наприклад, шляхом використання раніше продемонстрованого підходу, ваша рядок команди виходить приблизно такий, якщо ви отримуєте дані від користувача:

Все красиво і чудово, якщо користувач вводить дані в коректному вигляді, проте, що трапиться, якщо користувач введе value1, DROP table. У кращому випадку згенерує виняток (я не ставлю за мету перевірити, що робить цей приклад, - він просто демонструє підхід), в гіршому - ви можете поцілувати вашу таблицю на прощання. Ви можете обробити все введення користувача і вирізати все, що викликає проблеми, або використовувати SqlParameter. Клас SqlParameter досить великий, я тільки покажу вам основи використання параметрів. По суті, вам потрібні три речі, щоб створити параметр. Це ім'я, тип даних і їх розмір. (Зверніть увагу, що деякі типи даних, потрібні вам, не вимагають вказівки розміру, як Text).

Існує угода по іменування (воно може бути обов'язковим, я не впевнений), називати параметри починаючи з символу @. Далі, як ви будете використовувати параметр? Це буде досить просто, як показує наступний код.

Це зупинить шахраїв від спроб потрапити в вашу рядок команди. Це не все, для чого потрібні параметри, якщо ви хочете дізнатися більше - гарне місце почати звідси [^].

Не забувайте закрити, коли ви закінчили!

Закриття з'єднання так само просто, як і відкриття. Просто викличте SqlConnection.Close (). але не забувайте помістити його в блок try / catch, тому що, як і SqlConnection.Open (). він не повертає помилок, а викидає виключення.

Коли хороші з'єднання стають поганими

Тепер ваше додаток ASP.NET може логінитися на сервер. Все, що залишилося - дати права на бази даних.

Ці 2 рядки дають права на одну з баз даних. Таким чином, якщо ви хочете дати права на іншу базу даних - просто змініть .ATABASE% і виконайте обидві рядки.

Тепер ваше додаток ASP.NET може логінитися на сервер. Все, що залишилося - це дати права на бази даних.

Ці 2 рядки дають права на одну базу даних. Якщо ви хочете дати права на іншу базу, просто зміните .ATABASE% і знову виконайте обидві рядки.

вільні кінці

Тепер ви володієте основами, необхідними для початку використання бази даних SQL в ваших веб або настільних додатках.

Схожі статті