Как подключить базу данных к программе

В прошлой теме была создана база данных, теперь подключимся к ней из приложения. В любом проекте WPF, как и в ряде других типов проектов для .NET, по умолчанию есть файл конфигурации, который называется app.config и который имеет следующее содержимое:

Добавим в него строку подключения к бд, изменив файл следующим образом:

Для определения всех подключений в программе в пределах узла добавляется новый узел . В этом узле определяются строки подключения с помощью элемента . Каждая строка подключения имеет название, определяемое с помощью атрибута name . В данном случае строка подключения называется «DefaultConnection». Название может быть произвольное.

Атрибут connectionString собственно хранит строку подключения. Он состоит из трех частей:

  • Data Source=.SQLEXPRESS : указывает на название сервера. По умолчанию для MS SQL Server Express используется «.SQLEXPRESS»
  • Initial Catalog=mobiledb : название базы данных. Так как база данных называется mobiledb, то соответственно здесь данное название и указываем
  • Integrated Security=True : задает режим аутентификации

Так как мы будем подключаться к базе данных MS SQL Server, то соответственно мы будем использовать провайдер для SQL Server, функциональность которого заключена в пространстве имен System.Data.SqlClient.

C# + MSSQL | Создаём и подключаем базу данных к Windows Forms | SQL Запросы

Далее определим код графического интерфейса в xaml:

» Header=»Модель» Width=»120″/> » Header=»Производитель» Width=»125″/> » Header=»Цена» Width=»80″/>

Здесь определен довольно простой интерфейс: датагрид для отображения данных, и две кнопки для обновления данных в бд и для удаления. В итоге приложение будет выглядеть следующим образом:

Теперь определим код подключения и все обработчики кнопок в файле кода c#:

Вся работа с бд производится стандартными средствами ADO.NET и прежде всего классом SqlDataAdapter. Вначале мы получаем в конструкторе строку подключения, которая определена выше в файле app.config:

connectionString = ConfigurationManager.ConnectionStrings[«DefaultConnection»].ConnectionString;

Чтобы задействовать эту функциональность, нам надо добавить в проект библиотеку System.Configuration.dll .

Далее в обработчике загрузки окна Window_Loaded создаем объект SqlDataAdapter:

adapter = new SqlDataAdapter(command);

В качестве команды для добавления объекта устанавливаем ссылку на хранимую процедуру:

adapter.InsertCommand = new SqlCommand(«sp_InsertPhone», connection);

Получаем данные из БД и осуществляем привязку:

adapter.Fill(phonesTable); phonesGrid.ItemsSource = phonesTable.DefaultView;

За обновление отвечает метод UpdateDB() :

private void UpdateDB()

Чтобы обновить данные через SqlDataAdapter, нам нужна команда обновления, которую можно получить с помощью объекта SqlCommandBuilder. Для самого обновления вызывается метод adapter.Update() .

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

Причем не важно, что мы делаем в программе — добавляем, редактируем или удаляем строки. Метод adapter.Update сделает все необходимые действия. Дело в том, что при загрузке данных в объект DataTable система отслеживает состояние загруженных строк. В методе adapter.Update() состояние строк используется для генерации нужных выражений языка SQL, чтобы выполнить обновление базы данных. Более подробно про обновление с помощью адаптеров данных можно почитать здесь: Обновление БД из DataSet вручную

В обработчике кнопки обновления просто вызывается этот метод UpdateDB, а в обработчике кнопки удаления предварительно удаляются все выделенные строки.

Таким образом, мы можем вводить в DataGrid новые данные, редактировать там же уже существующие, сделать множество изменений, и после этого нажать на кнопку обновления, и все эти изменения синхронизируются с базой данных.

Читайте также:
Программа нам надо поговорить

Причем важно отметить действие хранимой процедуры — при добавлении нового объекта данные уходят на сервер, и процедура возвращает нам id добавленной записи. Этот id играет большую роль при генерации нужного sql-выражения, если мы захотим эту запись изменить или удалить. И если бы не хранимая процедура, то нам пришлось бы после добавления данных загружать заново всю таблицу в datagrid, только чтобы у новой добавленной записи был в datagrid id. И хранимая процедура избавляет нас от этой работы.

Также здесь мы могли бы выполнять обновление данных сразу после редактирования строки. Для этого нужно задействовать событие RowEditEnding элемента DataGrid:

public MainWindow() < InitializeComponent(); connectionString = ConfigurationManager.ConnectionStrings[«DefaultConnection»].ConnectionString; phonesGrid.RowEditEnding += PhonesGrid_RowEditEnding; >private void PhonesGrid_RowEditEnding(object sender, DataGridRowEditEndingEventArgs e)

И если после окончания редактирования мы нажмем на Enter, то срабатает обработчик события RowEditEnding, который обновит базу данных.

Итак, здесь рассмотрен простейший способ работы с базой данных в WPF. Далее мы рассмотрим еще один способ, который подразумевает применение технологии Entity Framework.

Источник: metanit.com

Программирование на C, C# и Java

Уроки программирования, алгоритмы, статьи, исходники, примеры программ и полезные советы

Подключение базы данных Oracle к Visual Studio

В этой статье поговорим про подключение базы данных Oracle к Visual Studio в качестве источника данных. А также рассмотрим пример написания простейшего запроса к базе данных.

БД Oracle — как источник данных в VS

У меня имеется база данных «Книжный интернет-магазин», созданная с помощью СУБД Oracle. Будем использовать эту БД в качестве примера источника данных в данной статье.

Итак, вначале создадим в Visual Studio проект: «Приложение Windows Forms».

Создание приложения Windows Forms - vscode.ru

После того, как проект создан, в меню «ПРОЕКТ» выберем «Добавить новый источник данных…».

Добавление нового источника данных к проекту VS - vscode.ru

Появится окно «Мастер настройки источника данных». В этом окне выберем элемент «База данных» и нажмем кнопку Далее.

Выбор БД в качестве источника данных - vscode.ru

В следующем окне выбираем элемент «Набор данных» и жмем кнопку Далее.

Выбор модели базы данных в Visual Studio - vscode.ru

Теперь необходимо выбрать подключение к базе данных. Оно у нас пока отсутствует, поэтому его необходимо создать. Нажмем кнопку «Создать подключение…».

Создадим новое подключение - vscode.ru

В качестве источника данных выберем «База данных Oracle». В разделе «Connection Details» укажим данные для своего подключения.

В пункте «Database service name» я указал «XE», потому что использую Express edition версию Oracle.

Параметры подключения к БД в Visual Studio - vscode.ru

Выполним тест подключения. Для этого нажмем кнопку «Проверить подключение».

Проверка подключения к БД в Visual Studio - vscode.ru

В окне «Добавить подключение» нажмем кнопку ОК. Теперь, когда подключение создано, в Мастере настройки источника данных нажмем кнопку Далее.

OracleConnection8

В следующем окне поставим галочку напротив пункта «Да, сохранить подключение как» и нажмем кнопку Далее.

OracleConnection9

В последнем окне Мастера настройки источника данных выберем объекты, которые необходимо использовать в качестве набора данных в программе. И укажем имя этого набора. Нажмем кнопку Готово.

Выбор объектов базы данных для набора данных в Visual Studio - vscode.ru

Теперь продемонстрируем использование данных из подключенной базы данных. Добавим в форму WIndows Forms элемент управления DataGridView. Щелкнем мышью на треугольничек в правом верхнем углу DataGridView, откроется меню «Задачи». В этом меню можно выбрать источник данных проекта.

Выберем таблицу «Book» из базы данных.

Выбор источника данных проекта в Visual Studio - vscode.ru

В элементе управления DataGridView отобразятся данные из выбранной таблицы.

Подключение базы данных Oracle к Visual Studio - vscode.ru

Пример запроса к БД Oracle из Visual Studio

Для написания запросов необходимо подключить к проекту через ссылку (References) библиотеку System_Data_OracleClient.dll (ссылка для скачивания этой библиотеки находится внизу страницы).

Приведем пример запроса к базе данных, для этого будем использовать язык C#. Получим название книги по ее ID.

Источник: vscode.ru

Как использовать базу данных MySQL в Java

Обложка: Как использовать базу данных MySQL в Java

В этой статье мы научимся подключаться к базе данных MySQL из Java-кода и выполнять простые запросы для получения и обновления данных. Для того, чтобы получить доступ к базе данных, мы будем использовать JDBC (Java Database Connectivity) API, который входит в стандартную библиотеку Java.

Читайте также:
Программа не бери трубку отзывы

JDBC позволяет подключиться к любой базе данных: Postgres, MySQL, SQL Server, Oracle и т. д. — при наличии соответствующей реализации драйвера, необходимого для подключения. Для базы данных MySQL мы будем использовать драйвер Type 4 JDBC из пакета mysql-connector-java-5.1.23-bin.jar . Он написан на чистой Java, а значит, нам не понадобятся какие-либо нативные библиотеки или ODBC-мост. Все, что нам надо будет сделать — это положить JAR-файл в директорию, содержащуюся в CLASSPATH. JAR-файл содержит класс com.mysql.jdbc.Driver , необходимый для подключения к MySQL. Если его не окажется в CLASSPATH, во время выполнения программы выбросится исключение java.lang.ClassNotFoundException , поэтому убедитесь, что вы правильно настроили пути.

Кстати, если вы ищете хорошую книгу по использованию JDBC, обратите внимание на Practical Database Programming with Java (Ying Bai). Это относительно новая книга, и в ней рассматриваются две самые популярные базы данных: Oracle и SQL Server 2008. В книге используется IDE NetBeans для примеров и описываются все инструменты, необходимые для работы с базами данных в Java. Это отличная книга для начинающих и опытных программистов.

Подключаем базу данных MySQL с помощью JDBC

Для того, чтобы подключить базу данных MySQL, нам потребуется четыре вещи:

  1. Строка подключения JDBC (например:
    jdbc:mysql://localhost:3306/test).
  2. Имя пользователя (root).
  3. Пароль (root).
  4. База данных с некоторым количеством таблиц для примера (например, база данных книг).

Строка подключения для MySQL начинается с jdbc:mysql . Это название протокола соединения, за которым следуют хост и порт подключения, на которых запущена база данных. В нашем случае это localhost с портом по умолчанию 3306 (если вы его не поменяли при установке). Следующая часть — test — имя базы данных, которая уже существует в MySQL. Мы можем создать таблицу Books :

CREATE TABLE `books` ( `id` int(11) NOT NULL, `name` varchar(50) NOT NULL, `author` varchar(50) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1

и наполнить её хорошими книгами:

INSERT INTO test.books (id, `name`, author) VALUES (1, ‘Effective Java’, ‘Joshua Bloch’); INSERT INTO test.books (id, `name`, author) VALUES (2, ‘Java Concurrency in Practice’, ‘Brian Goetz’);

Программа на Java, которая использует базу данных

Теперь давайте напишем программу на Java, которая будет подключаться к нашей базе данных, запущенной на localhost . Важно помнить о том, что необходимо закрывать соединение, запросы и результат выполнения после завершения работы с ними. Также важно закрывать их в finally-блоке, со своей try/catch оберткой, поскольку сам метод close() может кинуть исключение, что приведет к утечке ресурсов. За подробной информацией вы можете обратиться к этой статье. Кроме того, вы можете использовать обертку try-with-resource, которая появилась в Java 7. Более того, это стандартный способ работы с ресурсами в Java 1.7.

При первом запуске у вас, возможно, будет ошибка No suitable driver found for jdbc:mysql , если драйвера MySQL нет в CLASSPATH:

java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306/test/book at java.sql.DriverManager.getConnection(DriverManager.java:689) at java.sql.DriverManager.getConnection(DriverManager.java:247) at JavaToMySQL.main(JavaToMySQL.java:29) Exception in thread «main» java.lang.NullPointerException at JavaToMySQL.main(JavaToMySQL.java:46) Java Result: 1

Добавим нужный JAR-файл в путь и снова запустим программу. Другая частая ошибка — указать таблицу в строке соединения: jdbc:mysql://localhost:3306/test/book . В этом случае вылетит следущее исключение:

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown database ‘test/book’ at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance (NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance (DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:408) at com.mysql.jdbc.Util.handleNewInstance(Util.java:411) at com.mysql.jdbc.Util.getInstance(Util.java:386) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1053)

Успешный запуск программы выведет на экран следующее:

Total number of books in the table: 2

Результат верный, поскольку у нас в таблице только две книги: «Effective Java» и «Java Concurrency in Practice».

Кстати, если у вас был драйвер при компиляции, но отсутствует при запуске, вы получите исключение java.lang.ClassNotFoundException: com.mysql.jdbc.Driver . О том, как исправить эту ошибку, вы можете прочитать здесь.

Читайте также:
Не загружает программы с интернета

Получаем данные с помощью SELECT-запроса в JDBC

Для получения данных из БД вы можете выполнить SELECT-запрос. В первом примере мы уже его использовали, но получили только количество строк. Теперь мы вернем сами строки. Большая часть программы останется без изменений, за исключением SQL-запроса и кода, возвращающего данные из объекта ResultSet :

String query = «select id, name, author from books»; rs = stmt.executeQuery(query); while (rs.next())

Этот код выведет на экран следующее:

id: 1, name: Effective Java, author: Joshua Bloch id: 2, name: Java Concurrency in Practice, author: Brian Goetz

Тут есть пара моментов, на которые следует обратить внимание. Метод rs.getInt(1) используется для получения столбца с целочисленным типом, в нашем случае это столбец «id». Индексы в JDBC начинаются с единицы, поэтому rs.getInt(1) вернет значение первого столбца как целое число.

В случае, если вы укажете неверный индекс (многие разработчики вызывают rs.getInt(0) для получения первого столбца), выбросится исключение InvalidColumnIndexException . Доступ к столбцам по индексу чреват ошибками, поэтому лучше использовать имя столбца, например, rs.getInt(«id») . Подробнее об этом вы можете прочитать в этой статье. Метод getString() используется для получения строковых значений из базы (например, VARCHAR ). Цикл будет выполняться, пока rs.next() не вернет false . Это значит, что строки закончились. В нашем случае в таблице две строки, поэтому цикл выполнится два раза, выводя информацию о книгах из таблицы на экран.

Добавляем данные с помощью INSERT-запроса в JDBC

Добавление данных мало отличается от их получения: мы просто используем INSERT-запрос вместо SELECT-запроса и метод executeUpdate() вместо executeQuery() . Этот метод используется для запросов INSERT, UPDATE и DELETE, а также для SQL DDL выражений, таких как CREATE, ALTER или DROP. Эти команды не возвращают результата, поэтому мы убираем все упоминания ResultSet ‘а в коде и изменяем запрос соответственно:

String query = «INSERT INTO test.books (id, name, author) n» + » VALUES (3, ‘Head First Java’, ‘Kathy Sieara’);»; // executing SELECT query stmt.executeUpdate(query);

После запуска программы вы можете проверить таблицу в СУБД. На этот раз вы увидите три записи в таблице:

Connecting MySQL Database from Java

Теперь вы умеете подключаться к MySQL из Java-приложения и выполнять SELECT, INSERT, DELETE и UPDATE-запросы так же, как и в MySQL GUI. Для подключения мы используем объект Connection , для чтения результатов запроса — ResultSet . Убедитесь перед подключением, что сервер MySQL запущен и mysql-connector-java-5.1.17-bin.jar находится в CLASSPATH, чтобы избежать ClassNotFoundException .

Java-разработчик АО «Гринатом» , , можно удалённо , По итогам собеседования

Когда разберетесь с подключением и простыми запросами, имеет смысл изучить, как использовать подготавливаемые запросы (Prepared Statement) в Java для избежания SQL-инъекции. В боевом коде всегда следует использовать подготавливаемые запросы и связывание переменных.

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

  • Как подключиться к БД Oracle из Java-приложения;
  • Отличия межу Connected RowSet и Disconnected RowSet в Java;
  • Как использовать пул соединений в Spring;
  • 5 способов улучшить производительность БД в приложениях на Java;
  • Отличия между java.util.Date и java.sql.Date в Java;
  • Как выполнить INSERT или UPDATE, используя пакетные запросы JDBC;
  • Десять вопросов по JDBC на собеседованиях.

Полезные ссылки

  • Если у вас нет базы данных MySQL, вы можете ее скачать здесь;
  • Есди у вас нет драйвера MySQL для JDBC, вы можете скачать его отсюда;
  • Рекомендованную книгу «Practical Database Programming with Java» можно купить на Amazon.

Источник: tproger.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru