KnigaRead.com/
KnigaRead.com » Компьютеры и Интернет » Программирование » Владимир Волков - Программирование для карманных компьютеров

Владимир Волков - Программирование для карманных компьютеров

На нашем сайте KnigaRead.com Вы можете абсолютно бесплатно читать книгу онлайн Владимир Волков, "Программирование для карманных компьютеров" бесплатно, без регистрации.
Перейти на страницу:

в окне запроса ввести путь \<имя компьютера><имя папки> и нажать кнопку OK. Папка будет открыта, и можно будет скопировать из нее файл NorthwindDemo.sdf на эмулятор.

Подключение приложения к базе данных

Теперь можно приступить к созданию приложения.

4. Расположить на форме компоненты Button, Label и TextBox так, как это показано на рис. 6.23, и соответствующим образом установить их свойство Text.

Рис. 6.23. Расположение компонентов на форме.

5. Объявить в начале класса формы несколько переменных, как это показано в листинге 6.27. Листинг 6.27

Dim dbc As SqlServerCe.SqlCeConnection

Dim dbcm As SqlServerCe.SqlCeCommand = New

_SqlServerCe.SqlCeCommand(В«SELECT * FROM CustomersВ»)

Dim dba As SqlServerCe.SqlCeDataAdapter

Dim dbt As DataTable

6. Написать код процедуры нажатия кнопки Connect, который приведен в листинге 6.28. Листинг 6.28

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

Handles Button1.Click

'Создаем объект соединения

dbc = New SqlServerCe.SqlCeConnection

'Задаем значение строки соединения

dbc.ConnectionString = В«Data Source=NorthwindDemo.sdfВ»

'Создаем объект таблицы

dbt = New DataTable(В«CustomersВ»)

'Связываем объект команды и соединение

dbcm.Connection = dbc

'Создаем объект адаптера, в качестве аргумента передавая ему команду

dba = New SqlServerCe.SqlCeDataAdapter(dbcm)

'Адаптер выполняет команду, и результатом ее выполнения заполняет

'таблицу dba.Fill(dbt)

'Связываем элементы отображения данных с полями таблицы

TextBox4.DataBindings.Add(В«TextВ», dbt, В«CustomerIDВ»)

TextBox5.DataBindings.Add(В«TextВ», dbt, В«CompanyNameВ»)

TextBox6.DataBindings.Add(В«TextВ», dbt, В«ContactNameВ»)

TextBox7.DataBindings.Add(В«TextВ», dbt, В«CityВ»)

TextBox8.DataBindings.Add(В«TextВ», dbt, В«CountryВ»)

TextBox9.DataBindings.Add(В«TextВ», dbt, В«PhoneВ»)

TextBox10.DataBindings.Add(В«TextВ», dbt, В«FAXВ»)

End Sub

7. Написать код процедуры нажатия кнопки Disconnect, который приведен в листинге 6.29. Листинг 6.29

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

Handles Button2.Click

dbc.Close()

dbt.Clear()

TextBox4.DataBindings.Clear()

TextBox5.DataBindings.Clear()

TextBox6.DataBindings.Clear()

TextBox7.DataBindings.Clear()

TextBox8.DataBindings.Clear()

TextBox9.DataBindings.Clear()

TextBox10.DataBindings.Clear()

End Sub

Обратите внимание на необходимость в этом случае «отвязать» контекст, иначе в результате повторного присоединения к данным возникнет ошибка.

8. Обработка событий щелчка на кнопках навигации по набору данных, собранному в таблице, показана в листинге 6.30.

Листинг 6.30

Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

Handles Button4.Click

'Предыдущая запись

Me.BindingContext(dbt). Position – = 1

End Sub

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

Handles Button3.Click

'Первая запись

Me.BindingContext(dbt). Position = 0

End Sub

Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

Handles Button6.Click

'Последняя запись

Me.BindingContext(dbt). Position = Me.BindingContext(dbt). Count – 1

End Sub

Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

Handles Button5.Click

'Следующая запись

Me.BindingContext(dbt). Position += 1

End Sub

9. Теперь можно запустить программу и нажать кнопку Connect. Компоненты TextBox будут заполнены информацией из таблицы Customers. Следует убедиться, что переход между записями осуществляется корректно. После нажатия кнопки Disconnect компоненты TextBox должны быть очищены (рис. 6.24).

Рис. 6.24. Работающее приложение.

Таким образом было организовано отображение информации из таблицы базы данных. Теперь неплохо бы было организовать ввод информации.

10. К навигатору нужно добавить еще две кнопки, чтобы он выглядел так, как показано на рис. 6.25.

Рис. 6.25. Улучшенный навигатор.

11. Для кнопки с изображением крестика нужно использовать обработчик, функциональность которого умещается в одну строку.

Me.BindingContext(dbt). CancelCurrentEdit()

12. Код обработчика нажатия кнопки с галочкой приведен в листинге 6.31. Листинг 6.31

Dim cmd As SqlServerCe.SqlCeCommand

cmd = New SqlServerCe.SqlCeCommand_

("UPDATE Customers SET Country = " + TextBox8.Text + " WHERE _

CustomerID = " + TextBox4.Text + " ", dbc)

If dbc.State = ConnectionState.Closed Then

dbc.Open()

End If

cmd.ExecuteNonQuery()

13. Эти две команды показывают, каким образом можно отменить текущие изменения и как производится обновление данных в базе данных. Проект нужно снова запустить, нажать кнопку Connect, отредактировать поле Country у любой записи и нажать кнопку V. Затем следует разорвать соединение щелчком на кнопке Disconnect и снова соединиться с базой данных. Это позволит заметить, что изменения были внесены в таблицу. Но если снова внести изменения в поле Country и нажать кнопку X, то изменения будут отменены.

Впрочем, этот пример показывает лобовой подход, когда текст берется из элементов TextBox и вставляется в строку формируемого выражения SQL. Более красиво и правильно в этом случае воспользоваться параметризированной командой.

14. Необходимо изменить процедуру обработки щелчка на кнопке V при помощи кода, приведенного в листинге 6.32.

Листинг 6.32

Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

Handles Button7.Click

Dim cmd As SqlServerCe.SqlCeCommand

cmd = New SqlServerCe.SqlCeCommand("UPDATE Customers SET CompanyName_

=? ContactName =? City =? Country =? Phone=? FAX =? WHERE_

CustomerID =?", dbc)

cmd.Parameters.Add(В«@aВ», SqlDbType.NVarChar, 40)

cmd.Parameters.Add(В«@bВ», SqlDbType.NVarChar, 30)

cmd.Parameters.Add(В«@cВ», SqlDbType.NVarChar, 15)

cmd.Parameters.Add(В«@dВ», SqlDbType.NVarChar, 15)

cmd.Parameters.Add(В«@eВ», SqlDbType.NVarChar, 24)

cmd.Parameters.Add(В«@fВ», SqlDbType.NVarChar, 25)

cmd.Parameters.Add(В«@gВ», SqlDbType.NChar, 5)

cmd.Parameters.Item(В«@aВ»). Value = TextBox5.Text

cmd.Parameters.Item(В«@bВ»). Value = TextBox6.Text

cmd.Parameters.Item(В«@cВ»). Value = TextBox7.Text

cmd.Parameters.Item(В«@dВ»). Value = TextBox8.Text

cmd.Parameters.Item(В«@eВ»). Value = TextBox9.Text

cmd.Parameters.Item(В«@fВ»). Value = TextBox10.Text

cmd.Parameters.Item(В«@gВ»). Value = TextBox4.Text

If dbc.State = ConnectionState.Closed Then

dbc.Open()

End If

cmd.ExecuteNonQuery()

End Sub

Теперь пользователь может редактировать и обновлять все поля, выведенные на экран. Следует обратить внимание, что SQL Server CE поддерживает параметризированные запросы, но не воспринимает параметры по именам. Значения параметров подставляются в выражение SQL в том порядке, в каком они были добавлены к списку параметров. Связывание данных

В упражнении было видно, что для того, чтобы приложение установило соединение с базой данных, запросило необходимые данные, получило и разместило их, необходимо использовать компоненты из пространства имен System.Data.SqlServerCe. Но когда данные отображаются, используется возможность привязывать источники данных к обычным элементам отбражения. Способность образовывать связи с данными реализуется в этих элементах на уровне методов и свойств, которые рассматриваются в табл. 6.26.

Перейти на страницу:
Прокомментировать
Подтвердите что вы не робот:*