После завершения проектирования базы данных, необходимо разработать приложение для работы с ней. Для этого необходимо выбрать СУБД, с помощью которой будет реализовано это приложение. В данном пособии рассмотрим вопросы реализации приложений с использованием СУБД Access и системы Microsoft SQL Server.
3.1. Краткий обзор субд
Для использование на ПК, совместимых с IBM PC, большое распространение получили так называемые dBASE – подобные СУБД. Известно по крайней мере три семейства таких СУБД (dBASE, FoxPro и Clipper), однако версий оригинальных систем и их адаптированных вариантов гораздо больше. Отличаясь друг от друга используемыми командными языками, все эти СУБД используют одни и те же оперативные файлы с расширением .dbf, формат которых стал на некоторое время своеобразным стандартом баз данных.
В dBASE – подобных СУБД использован реляционный подход к организации данных, т.к. каждый файл .dbf представляет собой двумерную таблицу, которая состоит из фиксированного числа столбцов и переменного числа строк (записей). С помощью командных языков этих СУБД создаются и исправляются макеты файлов .dbf (описание таблиц), создаются индексные файлы, пишутся программы работы с базами данных (чтение, поиск, модификация данных, составление отчетов и многое другое). Характерной особенностью файла .dbf является простота и наглядность: физическое представление данных на диске в точности соответствует представлению таблицы на бумаге.
Программа с базой данных и интерфейсом PYQT5 на Python
Однако в целом системы, построенные на основе файлов .dbf, следует считать устаревшими. Многие механизмы реляционных БД в dBASE – подобных системах либо не поддерживаются, либо создаются пользователями и программистами «кустарным» способом.
Большую популярность до сего времени имеют и другие СУБД ( с другим форматом файлов) – Paradox, Clarion, dv_Vista и т.д. Cледует подчеркнуть, что перечисленные системы ведут родословную от MS DOS, однако нынче почти все они усовершенствованы и имеют версии для Windows.
Среди современных реляционных систем наиболее популярны СУБД для Windows – Access фирмы Microsoft, Approach фирмы Lotus, Paradox фирмы Borland.
Многие из этих систем поддерживают технологию OLE и могут манипулировать не только числовой и текстовой информацией, но и графическими (рисунками, фотографиями), звуковыми фрагментами и клипами.
Перечисленные СУБД часто называют настольными, имея ввиду сравнительно небольшой объем данных, обслуживаемых этими системами. Однако с ними часто работают не только индивидуальные пользователи, но и целые коллективы (особенно в локальных вычислительных сетях).
Вместе с тем, в центр современных информационных технологий перемещаются более мощные реляционные СУБД с так называемым SQL – доступом. В основе этих СУБД лежит технология «клиент – сервер».
Среди ведущих производителей таких систем фирмы Oracle, Centura, Sybase, Informix, Microsoft и другие.
Следующее направление в развитии СУБД это объекто – реляционные и объектные СУБД. Объектно – реляционные базируются на реляционных СУБД со встроенной поддержкой объектной ориентации. К таким СУБД относятся DB2 и Oracle фирм IBM и Oracle соответственно, Jllustra фирмы Informix, Ingres компании Computer Associates.
База данных SQLite в Python. Создание БД, вставка в БД | Базовый курс. Программирование на Python
Среди объектных СУБД можно назвать Objectvity фирмы Objectvity, Ontos DB фирмы Ontos, ObjectStore фирмы ObjectDesing, Poet компании Poet Software GmbH, O2 фирмы О2 Technology, Itasca фирмы Ibex Computing, UniSQL фирмы UniSQL, Jasmine компании Computer Associates, ODB-Jupiter фирмы НПЦ «Интелтек Плюс» и другие.
Источник: studfile.net
Create a simple data application by using ADO.NET
Applies to: Visual Studio
Visual Studio for Mac
Visual Studio Code
Datasets and related classes are legacy .NET technologies from the early 2000s that enable applications to work with data in memory while the applications are disconnected from the database. They are especially useful for applications that enable users to modify data and persist the changes back to the database. Although datasets have proven to be a very successful technology, we recommend that new .NET applications use Entity Framework Core. Entity Framework provides a more natural way to work with tabular data as object models, and it has a simpler programming interface.
When you create an application that manipulates data in a database, you perform basic tasks such as defining connection strings, inserting data, and running stored procedures. By following this topic, you can discover how to interact with a database from within a simple Windows Forms «forms over data» application by using Visual C# or Visual Basic and ADO.NET. All .NET data technologies—including datasets, LINQ to SQL, and Entity Framework—ultimately perform steps that are very similar to those shown in this article.
This article demonstrates a simple way to quickly get data out of a database. If your application needs to modify data in non-trivial ways and update the database, you should consider using Entity Framework and using data binding to automatically sync user interface controls to changes in the underlying data.
To keep the code simple, it doesn’t include production-ready exception handling.
The complete code for this tutorial can be accessed in the Visual Studio docs GitHub repo in C# and Visual Basic.
Prerequisites
To create the application, you’ll need:
- Visual Studio.
- SQL Server Express LocalDB. If you don’t have SQL Server Express LocalDB, you can install it from the SQL Server download page.
This topic assumes that you’re familiar with the basic functionality of the Visual Studio IDE and can create a Windows Forms application, add forms to the project, put buttons and other controls on the forms, set properties of the controls, and code simple events. If you aren’t comfortable with these tasks, we suggest that you complete the Create a Windows Forms app in Visual Studio with Visual Basic tutorial or the Create a Windows Forms app in Visual Studio with C# tutorial before you start this walkthrough.
Set up the sample database
Create the sample database by following these steps:
- In Visual Studio, open the Server Explorer window.
- Right-click on Data Connections and choose Create New SQL Server Database.
- In the Server name text box, enter (localdb)mssqllocaldb.
- In the New database name text box, enter Sales, then choose OK. The empty Sales database is created and added to the Data Connections node in Server Explorer.
- Right-click on the Sales data connection and select New Query. A query editor window opens.
- Copy the Sales Transact-SQL script to your clipboard.
- Paste the T-SQL script into the query editor, and then choose the Execute button. After a short time, the query finishes running and the database objects are created. The database contains two tables: Customer and Orders. These tables contain no data initially, but you can add data when you run the application that you’ll create. The database also contains four simple stored procedures.
Create the forms and add controls
- Create a project for a Windows Forms application, and then name it SimpleDataApp. Visual Studio creates the project and several files, including an empty Windows form that’s named Form1.
- Add two Windows forms to your project so that it has three forms, and then give them the following names:
- Navigation
- NewCustomer
- FillOrCancel
- For each form, add the text boxes, buttons, and other controls that appear in the following illustrations. For each control, set the properties that the tables describe.
Note The group box and the label controls add clarity but aren’t used in the code.
Navigation form
Button | Name = btnGoToAdd |
Button | Name = btnGoToFillOrCancel |
Button | Name = btnExit |
NewCustomer form
FillOrCancel form
Store the connection string
When your application tries to open a connection to the database, your application must have access to the connection string. To avoid entering the string manually on each form, store the string in the App.config file in your project, and create a method that returns the string when the method is called from any form in your application.
You can find the connection string by right-clicking on the Sales data connection in Server Explorer and choosing Properties. Locate the ConnectionString property, then use Ctrl+A, Ctrl+C to select and copy the string to the clipboard.
- If you’re using C#, in Solution Explorer, expand the Properties node under the project, and then open the Settings.settings file. If you’re using Visual Basic, in Solution Explorer, click Show All Files, expand the My Project node, and then open the Settings.settings file.
- In the Name column, enter connString .
- In the Type list, select (Connection String).
- In the Scope list, select Application.
- In the Value column, enter your connection string (without any outside quotes), and then save your changes.
In a real application, you should store the connection string securely, as described in Connection strings and configuration files.
Write the code for the forms
This section contains brief overviews of what each form does. It also provides the code that defines the underlying logic when a button on the form is clicked.
Navigation form
The Navigation form opens when you run the application. The Add an account button opens the NewCustomer form. The Fill or cancel orders button opens the FillOrCancel form. The Exit button closes the application.
Make the Navigation form the startup form
If you’re using C#, in Solution Explorer, open Program.cs, and then change the Application.Run line to this: Application.Run(new Navigation());
If you’re using Visual Basic, in Solution Explorer, open the Properties window, select the Application tab, and then select SimpleDataApp.Navigation in the Startup form list.
Create auto-generated event handlers
Double-click the three buttons on the Navigation form to create empty event handler methods. Double-clicking the buttons also adds auto-generated code in the Designer code file that enables a button click to raise an event.
If you skip the double-click action in the designer and just copy the code and paste it into your code files, don’t forget to set the event handler to the right method. You can do this in the Properties window. Switch to the Events tab (use the lightning bolt toolbar button) and look for the Click handler.
Add code for the Navigation form logic
In the code page for the Navigation form, complete the method bodies for the three button click event handlers as shown in the following code.
/// /// Opens the NewCustomer form as a dialog box, /// which returns focus to the calling form when it is closed. /// private void btnGoToAdd_Click(object sender, EventArgs e) < Form frm = new NewCustomer(); frm.Show(); >/// /// Opens the FillorCancel form as a dialog box. /// private void btnGoToFillOrCancel_Click(object sender, EventArgs e) < Form frm = new FillOrCancel(); frm.ShowDialog(); >/// /// Closes the application (not just the Navigation form). /// private void btnExit_Click(object sender, EventArgs e)
»’ »’ Opens the NewCustomer form as a dialog box, which returns focus to the calling form when it closes. »’ Private Sub btnGoToAdd_Click(sender As Object, e As EventArgs) Handles btnGoToAdd.Click Dim frm As Form = New NewCustomer() frm.Show() End Sub »’ »’ Opens the FillOrCancel form as a dialog box. »’ Private Sub btnGoToFillOrCancel_Click(sender As Object, e As EventArgs) Handles btnGoToFillOrCancel.Click Dim frm As Form = New FillOrCancel() frm.ShowDialog() End Sub »’ »’ Closes the application (not just the navigation form). »’ Private Sub btnExit_Click(sender As Object, e As EventArgs) Handles btnExit.Click Me.Close() End Sub
The code for this tutorial is available in C# and Visual Basic. To switch the code language on this page between C# and Visual Basic, use the code language switcher at the top of the page on the right side.
NewCustomer form
When you enter a customer name and then select the Create Account button, the NewCustomer form creates a customer account, and SQL Server returns an IDENTITY value as the new customer ID. You can then place an order for the new account by specifying an amount and an order date and selecting the Place Order button.
Create auto-generated event handlers
Create an empty Click event handler for each button on the NewCustomer form by double-clicking on each of the four buttons. Double-clicking the buttons also adds auto-generated code in the Designer code file that enables a button click to raise an event.
Add code for the NewCustomer form logic
To complete the NewCustomer form logic, follow these steps.
Bring the System.Data.SqlClient namespace into scope so that you don’t have to fully qualify the names of its members.
using System.Data.SqlClient;
Imports System.Data.SqlClient
Add some variables and helper methods to the class as shown in the following code.
// Storage for IDENTITY values returned from database. private int parsedCustomerID; private int orderID; /// /// Verifies that the customer name text box is not empty. /// private bool IsCustomerNameValid() < if (txtCustomerName.Text == «») < MessageBox.Show(«Please enter a name.»); return false; >else < return true; >> /// /// Verifies that a customer ID and order amount have been provided. /// private bool IsOrderDataValid() < // Verify that CustomerID is present. if (txtCustomerID.Text == «») < MessageBox.Show(«Please create customer account before placing order.»); return false; >// Verify that Amount isn’t 0. else if ((numOrderAmount.Value < 1)) < MessageBox.Show(«Please specify an order amount.»); return false; >else < // Order can be submitted. return true; >> /// /// Clears the form data. /// private void ClearForm()
‘ Storage for ID values returned from the database.
Private parsedCustomerID As Integer Private orderID As Integer »’ »’ Verifies that the customer name text box is not empty. »’ Private ReadOnly Property IsCustomerNameValid As Boolean Get If txtCustomerName.Text = «» Then MessageBox.Show(«Please enter a name.») Return False Else Return True End If End Get End Property »’ »’ Verifies the order data is valid. »’ Private Function IsOrderDataValid() As Boolean ‘ Verify that CustomerID is present. If txtCustomerID.Text = «» Then MessageBox.Show(«Please create a customer account before placing order.») Return False ‘ Verify that order amount isn’t 0. ElseIf (numOrderAmount.Value < 1) Then MessageBox.Show(«Please specify an order amount.») Return False Else ‘ Order can be submitted. Return True End If End Function »’ »’ Clears values from controls. »’ Private Sub ClearForm() txtCustomerName.Clear() txtCustomerID.Clear() dtpOrderDate.Value = DateTime.Now numOrderAmount.Value = 0 Me.parsedCustomerID = 0 End Sub
Complete the method bodies for the four button click event handlers as shown in the following code.
FillOrCancel form
The FillOrCancel form runs a query to return an order when you enter an order ID and then click the Find Order button. The returned row appears in a read-only data grid. You can mark the order as canceled (X) if you select the Cancel Order button, or you can mark the order as filled (F) if you select the Fill Order button. If you select the Find Order button again, the updated row appears.
Create auto-generated event handlers
Create empty Click event handlers for the four buttons on the FillOrCancel form by double-clicking the buttons. Double-clicking the buttons also adds auto-generated code in the Designer code file that enables a button click to raise an event.
Add code for the FillOrCancel form logic
To complete the FillOrCancel form logic, follow these steps.
Bring the following two namespaces into scope so that you don’t have to fully qualify the names of their members.
using System.Data.SqlClient; using System.Text.RegularExpressions;
Imports System.Data.SqlClient Imports System.Text.RegularExpressions
Add a variable and helper method to the class as shown in the following code.
‘ Storage for OrderID. Private parsedOrderID As Integer »’ »’ Verifies that OrderID is valid. »’ Private Function IsOrderIDValid() As Boolean ‘ Check for input in the Order ID text box. If txtOrderID.Text = «» Then MessageBox.Show(«Please specify the Order ID.») Return False ‘ Check for characters other than integers. ElseIf Regex.IsMatch(txtOrderID.Text, «^D*$») Then ‘ Show message and clear input. MessageBox.Show(«Please specify integers only.») txtOrderID.Clear() Return False Else ‘ Convert the text in the text box to an integer to send to the database. parsedOrderID = Int32.Parse(txtOrderID.Text) Return True End If End Function
Complete the method bodies for the four button click event handlers as shown in the following code.
Test your application
Run the application and try creating a few customers and orders to verify that everything is working as expected. To verify that the database is updated with your changes, open the Tables node in Server Explorer, right-click on the Customers and Orders nodes, and choose Show Table Data.
See also
Источник: learn.microsoft.com
Доступ к БД из программы на Java. Работа с базами данных java
import java.sql.*;
Это пример простого приложения, которое устанавливает соединение с базой данных MySQL, выполняет запрос на выборку данных из таблицы и выводит результаты в консоль. Однако, обычно для работы с базами данных в Java используются библиотеки ORM, такие как Hibernate или JPA.
Однако не все базы данных могут поддерживаться через JDBC. Для работы с определенной СУБД также необходим специальный драйвер. Каждый разработчик определенной СУБД обычно предоставляет свой драйвер для работы с JDBC. То есть если мы хотим работать с MySQL, то нам потребуется специальный драйвер для работы именно MySQL.
Как правило, большинство драйверов доступны в свободном доступе на сайтах соответствующих СУБД. Обычно они представляют JAR-файлы. И преимущество JDBC как раз и состоит в том, что мы абстрагируемся от строения конкретной базы данных, а используем унифицированный интерфейс, который един для всех.
Для взаимодействия с базой данных через JDBC используются запросы SQL. В то же время возможности SQL для работы с каждой конкретной СУБД могут отличаться. Например, в MS SQL Server это T-SQL, в Oracle — это PL/SQL. Но в целом эти разновидности языка SQL не сильно отличаются.
DBC (Java Database Connectivity) — это стандартный интерфейс программирования, который позволяет взаимодействовать с различными типами баз данных из приложений, написанных на языке Java. Он обеспечивает унифицированный способ доступа к базам данных, независимо от используемого типа базы данных.
Интерфейс JDBC включает в себя следующие ключевые компоненты:
- DriverManager — класс, который управляет списком зарегистрированных драйверов JDBC.
- Driver — интерфейс, который определяет методы, необходимые для взаимодействия с конкретной базой данных.
- Connection — интерфейс, который представляет собой соединение с базой данных. Он позволяет выполнять SQL-запросы и получать результаты.
- Statement — интерфейс, который позволяет выполнить SQL-запрос и получить результаты в виде объекта ResultSet.
- ResultSet — интерфейс, который представляет собой набор строк, возвращенных SQL-запросом. Он позволяет итерироваться по результатам запроса и получать значения полей.
- PreparedStatement — интерфейс, который представляет собой предварительно скомпилированный SQL-запрос. Он позволяет многократно использовать один и тот же запрос с разными параметрами.
- CallableStatement — интерфейс, который представляет собой вызываемую процедуру или функцию базы данных. Он позволяет передавать параметры в вызываемую процедуру и получать результаты.
Некоторые приложения обрабатывают данные, которые пользователь должен ввести после запуска программы. Например, калькулятор, прежде чем посчитать сумму двух чисел, ждет, когда получит их от пользователя. И слагаемые, и сумма впоследствии нигде не сохраняются, и когда калькулятор будет запущен снова, пользователю понадобится ввести новые данные для обработки.
Другие программы запоминают какие-то небольшие сведения о предыдущих сеансах работы. Например, игра «Сапер» (и многие другие) поддерживают список игроков, набравших наибольшее число очков в предыдущих играх. Эта информация чаще всего хранится в небольшом файле произвольного формата и извлекается из него при запуске программы или при выборе пользователем соответствующего пункта меню.
Многие программные продукты предназначены для обработки большого количества данных, которые невозможно каждый раз запрашивать у пользователя. Более того, основная задача современных приложений может заключаться не столько в обработке, сколько в хранении и поиске данных. А для больших объемов данных обычные файлы не подходят – для того, чтобы найти запись, удовлетворяющую нужным условиям, файл нужно просмотреть от начала до конца.
Поэтому большинство современных приложений накапливают данные в базе данных и взаимодействуют с этой базой данных посредством СУБД. СУБД берет на себя все заботы по организации оптимального размещения данных на жестком диске, выборке нужных данных, их защите от несанкционированного доступа и т.д. Приложению остается только обращаться к СУБД с соответствующими запросами на добавление, редактирование, поиск нужной информации в БД.
Последние несколько лет наибольшей популярностью пользуются реляционные базы данных, в которых данные хранятся в форме таблиц. Существует несколько десятков популярных реляционных СУБД. Они различаются по ряду параметров: производительность, масштабируемость, защищенность, стоимость, дополнительные возможности по манипулированию данными и т.д., но в их основе лежит одна и та же математическая модель.
Все реляционные СУБД поддерживают стандартизированный язык запросов SQL. С его помощью можно создавать таблицы (т.е. задавать структуру БД), заполнять их данными, осуществлять выборку нужных данных по запросу.
Разработчики, знакомые с SQL, могут использовать для хранения данных своего приложения любую реляционную СУБД, не тратя много времени на то, чтобы разобраться с особенностями ее функционирования.
ODBC и JDBC
Программа, использующая для хранения данных реляционную СУБД, должна каким-то образом соединяться с конкретной базой данных, посылать ей SQL-запросы и анализировать полученный результат.
Существует универсальный, не зависящий от языка программирования, механизм взаимодействия программ с СУБД – интерфейс открытого доступа к данным ODBC. Это низкоуровневый API, который можно использовать для работы с любой реляционной БД, обращаясь к базе данных через системные вызовы. Единственное требование: в системе должен быть установлен нужный ODBC-драйвер (иногда он может не входить в дистрибутив СУБД, поэтому понадобится найти его и установить отдельно).
Пользоваться низкоуровневым API достаточно трудоемко. Гораздо удобнее работать с библиотекой того языка, на котором разрабатывается вся программа – в нашем случае Java.
Язык Java предоставляет собственный интерфейс для взаимодействия с реляционными БД. Он называется JDBC (Java Database Connectivity). С точки зрения программирования можно рассматривать JDBC просто как набор классов, позволяющих легко осуществлять такие действия как:
- Соединение с базой данных.
- Отправка SQL-запроса.
- Обработка полученных результатов.
JDBC-драйвер
Java-классы, используемые для работы с реляционной БД, взаимодействуют с этой БД посредством так называемого JDBC-драйвера. Это посредник между библиотеками Java и внутренним механизмом СУБД. JDBC-драйверы бывают нескольких видов.
Самый доступный вариант – драйвер моста JDBC-ODBC. Он присутствует в дистрибутиве Java SDK по умолчанию, так что его поиск и установка в систему не требуется. Этот драйвер преобразует все обращения к интерфейсу JDBC в обращения к интерфейсу ODBC.
Другой вариант – драйвер, полностью написанный на Java. Такой драйвер преобразует запросы JDBC непосредственно в запросы, специфичные для конкретной базы данных. Такие драйвера разработаны практически для всех популярных СУБД, однако необходимо нужный драйвер найти и интегрировать его с собственной программой.
И в том и в другом случае программный код одинаков, за исключением команды, загружающей нужный драйвер. Но второй вариант предпочтительнее по двум причинам.
- Он выигрывает в производительности, поскольку программа обращается напрямую к СУБД без лишнего посредника (в виде ODBC-драйвера).
- ODBC-драйвер с программой не интегрируется, поэтому должен быть установлен и настроен отдельно, т.е. в первом случае усложняется процесс инсталляции.
СУБД Firebird
Чтобы приступить к организации хранения данных программы в БД (посредством механизма JDBC), необходимо выбрать СУБД, с которой будет работать программа, установить ее и настроить и после этого создать собственно базу данных. База данных обычно не создается во время работы приложения, а поставляется в его составе уже в готовом виде (хотя, возможно, незаполненная). Это логично, поскольку структура БД (описание ее таблиц), как правило, остается неизменной.