Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Продолжаем о БД


Visual Basic: новости сайтов, советы, примеры кодов

VBNet.Ru
Выпуск от Павла Сурменка



Продолжаем о БД



Начну выпуск с ответов на письма подписчиков. Точнее одного подписчика, Александра Горбылёва.

 

> Итак, вы за это время "пересели" на VB.Net, как я понял.

На VB .NET я "перепрыгнул" еще летом 2002-го года... Но сейчас решил уже сбросить этот груз прошлого под названием VB6 (который был созан 8 лет назад), и говорить только о более свежих технологиях: VB .NET, C#, ASP .NET, SQL Server 2005 и т.д.

>Что касается ADO: не упомянуто "основное", то бишь, штатное  подключение к SQL Express (там указывается .mdf-файл).

Об этом вопросе я как-то даже не думал... Всю жизнь работаю с "нормальными" версиями SQL Server'а.

Здесь два варианта доступа к БД. Первый, как вы сказали, с указанием в строке соединения пути к файлу базы данных *.mdf. Выглядит это примерно так:

Dim ConnectionString As String = " data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=путь_к_mdf;User Instance=true"

Это для случая, когда SQL Server стоит на локальном компьютере, Instance названа SQLEXPRESS, авторизация стандартная NT.

Второй способ - в SQL Server Management Studio сделать Attach файла mdf, и далее доступаться к базе данных так же, как в других редакциях SQL Server.

>Кстати, пока по нему у меня вопросы практического характера и основной из них - как его восстанавливать, если что-либо случиться, как это было иногда в Access?

А что с ним может случиться? Мне не очень понятен вопрос...

>Второй вопрос: существует ли процедура погружения базы Access в SQL Express?

В SQL Server Client Tools есть утилита Import&Export Wizard. Это если для версии 2000. А в 2005 в SQL Server Management Studio в контекстном меню базы данных есть пункт вроде Export data или Import data – он запускает тот же самый wizard. Вот в нем можно выполнить любые переносы данных между различными СУБД. В том числе и между SQL Server и Access. Если нужно не просто перенести, а еще делать какие-то сложные преобразования данных (скажем в одной базе одна структура данных, в другой другая, а данные в принципе одни и те же - например, юзеры/топики/сообщения интернет-форума), то тут поможет SQL Server 2005 Integration Services. Мой коллега Артём Кривокрисенко недавно делал сложный проект переноса данных между разными системами, он был доволен возможностями Integration Services.

>И о "CRM, ERP, WMS и т.д." тоже интересно знать.

Ну это уже не по теме этой рассылки. Подписывайтесь на "Информационную поддержку бизнеса", там расскажем :)

>Небольое продолжение в тему.

>В "SQL Server 2005 Express Edition Books Online" есть статья "SQL Server Management Studio and SQL Server Express".

>Итог:

>SQL Server Management Studio в комплект с SQL Server Express не входит! Написано: пользуйтесь в таком разе операторами Transact-SQL через утилиты sqlcmd.

>SQL Server Management Studio позволяет разработчику администрировать SQL Server Express (при условии, что пользовательский экземпляр SQL Server Express активен). В этом случае SQL Server Management Studio соединяется с пользовательским экземпляром по протоколу «pipe»!

>Правда, как всё это делается, там рассказано.

>Вопрос: сколько весит «SQL Server Management Studio»? Хотелось бы её где-то найти и поставить. Не сегодня-завтра дома всё же будет ADSL!

Есть специальная версия SQL Server Management Studio для SQL Server 2005 Express. Скачивается беплатно с сайта Microsoft. Поищите.

 

И теперь далее по базам данных :) С открытием соединения, кажется, разобрались. Если есть еще вопросы – пишите, в меру возможностей отвечу.

Теперь перейдем собственно к оперированием данными. Грубо говоря, все операции с БД (если не говорить о хранимых процедурах и прочих более сложных вещах)  можно разделить на две категории: запросы на получение данных и запросы на изменение данных (добавление, изменение, удаление).

Получение данных можно организовать многими различными способами – различаются они уровнем абстракции кода, количеством автосгенерированного кода, удобством работы и производительностью: как правило, чем удобней работать с интерфейсом, тем ниже будет его скорость :)  Интерфейсы более высокого уровня используют для работы интерфейсы низкого уровня.

Можно изобразить это так:

DataReaderDataSet и DataAdapter – типизированные DataSet и Table Adapters

Для начала рассмотрим то, что лежит в основе. Используются два объекта: Command  и DataReader (для SQL Server эти классы называются SqlCommand и SqlDataReader).

Словами это рассказывать трудно и нудно, поэтому я просто оприведу пример кода :)

'Строка соединения

Dim ConnectionString As String = "Password=******;Persist Security Info=True;User ID=sa;Initial Catalog=test;Data Source=SURMENOK\SQL2005"

 

оздаем соединение

Using Conn As New SqlConnection(ConnectionString)

 

    'Открываем соединение

    Conn.Open()

 

    'Текст SQL-запроса

    Dim SQL As String = "SELECT UserName, Email FROM Users ORDER BY UserName ASC"

 

    'Создаем команду

    Dim Comm As New SqlCommand(SQL, Conn)

 

    'Выполняем команду, получая в результате SqlDataReader

    Dim DR As SqlDataReader = Comm.ExecuteReader()

 

    'Перебираем все записи в DataReader

    While DR.Read()

        'Получаем значения полей записи

        Dim UserName As String = CType(DR("UserName"), String)

        Dim Email As String = CType(DR("Email"), String)

 

        'Выводим результат в консоль

        Console.WriteLine("{0} {1}", UserName, Email)

    End While

 

    'Закрываем ридер

    DR.Close()

End Using

 

Этот код выводит на консоль значения полей UserName и Email из таблицы Users. Запросы на выборку даных пишутся на языке SQL. Если хотите познакомиться с этим языком, поищите в интернете книгу Мартина Грубера «Понимание SQL».

 

На сегодня всё. В следующий раз рассмотрим параметризированные запросы и выполнение запросов, не возвращающих данные (или возвращающих не таблицу, а одно значение).

 

Павел Сурменок

VBNet
Монополия на истину
Web Reflection

 


В избранное