Работа с бази данни в Java

Съдържание
Java Като многоцелеви език, освен различните функционалности, които можем да постигнем, той също ни позволява да работим с постоянството на данните, за това можем да осъществим връзка с различните двигатели на Бази данни които съществуват на пазара.
А База данни Това може да бъде нещо толкова просто като система ключ-стойност в обикновен текстов файл, както и по-сложни и модерни решения като нерелационни, което прави възможността за разработване на различни схеми за свързване задължителна функция.
JDBC са набор от класове, които позволяват Java установяване на връзки с механизми на база данни, това ни позволява да получим резултатите от заявките в обект, наречен ResultSet.
Тъй като всеки двигател е различен, вероятно е ResultSet това, което получаваме, е специфично за него, затова не е удобно да структурираме приложението си около споменатия обект.
За да разрешим този проблем, можем да използваме това, което се нарича а обект за достъп, с които можем да управляваме различните наши форми ResultSet улеснявайки изпълнението на вашето приложение в нашата програма и по този начин разработчикът има по -малко проблеми.
Моделът на проектиране на DAOThe Обект за достъп до данни или DAO Това е модел на проектиране, който събира това, което обяснихме в предишната точка, това изисква от нас да създадем клас за достъп до свойствата на нашите База данни. За да свършим тази работа, трябва да направим цялата работа JDBC и контролера, който ни позволява да се свържем с конкретния двигател, който искаме, освен това трябва да извършим логическото изпълнение, което обясняваме, за да избегнем зависимост от конкретни компоненти, които само биха ни затруднили да мигрираме към различен механизъм на базата данни.
Първото нещо, което трябва да направим, за да изградим връзка JDBC е да идентифицираме кой е двигателят, към който искаме да направим връзката, и след това да получим необходимите класове за споменатата връзка, в този случай ще направим връзка MySQL, този двигател е лек, безплатен и мултиплатформен, така че можем да го инсталираме и в Windows, Linux или Mac.
Конектор / J е набор от класове, предлагани от екипа за развитие на MySQL, с тях можем да направим JDBC работи заедно с това Бази данни релационни, за да го включим в нашия проект, трябва да следваме следните стъпки.
1- Трябва да изтеглим и файла, съответстващ на нашата платформа Windows или за други от официалния уебсайт на MySQL В следната връзка.

Увеличете

2- В този урок ще работим под Windows, така че за прилагането му в нашите примери ще го направим по време на изпълнение за по -голяма лекота, но когато изтеглим пакета, го инсталираме, за да бъде наличен на нашия компютър.
3- Сега ще продължим да тестваме дали всичко работи правилно на нашия компютър, за това ще направим малък код, където ще видим дали конектор / J беше успешно зареден в нашата система, за това ще използваме следния код:
 публичен клас ConnectionTest {public static void main (String [] args) {try {Class c = Class.forName ("com.mysql.jdbc.Driver"); System.out.println ("Зареден клас:" + c.getName ()); } catch (ClassNotFoundException ex) {System.err.println (ex); }}} 

4- За да изпълним този пример, трябва да включим зависимостта, препоръчително е да имаме .jar по същия път на нашия файл TestConexion.java. С това покритие ще продължим да компилираме нашия файл, отваряме конзола и с инструкциите javac и добавяне на .jar към classpath по време на изпълнение с командата -cp Можем да го направим, нека видим командния ред:
 javac -cp mysql-конектор-java-5.1.34-bin.jar ConnectionTest.java 

5- И накрая, за да изпълним нашия файл, трябва само да изпълним следната инструкция:
java -cp mysql-конектор-java-5.1.34-bin.jar TestConnection

Ако имаме резултат като следния в нашата конзола, можем да започнем да работим с операции до Бази данни:

Увеличете

Следващата стъпка, която трябва да предприемем, е да установим ефективна връзка с нашата База данни, за това трябва да създадем една с поне една таблица на нашия локален сървър, по този начин можем да извършим някои тестове, за да улесним нещата създаваме база данни, наречена тест и използваме следния скрипт, за да създадем таблицата и да вмъкнем някои тестови записи, това за ускоряване на разработването на урока:

СЪЗДАЙТЕ ТАБЛИЦА, АКО НЕ СЪЩЕСТВАВА "потребители" (
`id` bigint (20) NOT NULL AUTO_INCREMENT,
`name` varchar (255) NOT NULL,
дата „дата“ НЕ Е НУЛ,
`state` int (11) NOT NULL,
ОСНОВЕН КЛЮЧ (`id`)
) ДВИГАТЕЛ = InnoDB ПО подразбиране ШАРСЕТ = latin1 AUTO_INCREMENT = 3;
ВМЕСТВАНЕ НА „потребители“ („идентификатор“, „име“, „дата“, „състояние“) СТОЙНОСТИ
(1, „Потребител 1“, „2015-01-01“, 1),
(2, „Потребител 2“, „2015-01-01“, 1);

Сега в следния код на Java ще се съсредоточим върху установяването на връзката с База данни, за това с a опитайте catch block Ще потвърдим, че е ефективен и без грешки, тогава ако връзката е установена, ще отпечатаме съобщение за успех, нека видим:
 импортиране на java.sql.Connection; импортиране на java.sql.DriverManager; публичен клас ConnectionTest {private static final String path = "jdbc: mysql: // localhost"; private static final String user = "наш потребител"; private static final String password = "нашата парола"; публичен static void main (String [] args) {try {Connection con = DriverManager.getConnection (път, потребител, парола); System.out.println ("Връзката е успешна"); } catch (Изключение д) {e.printStackTrace (); }}} 

От този код можем да видим, че трябва да импортираме две библиотеки от пакета java.sql, един е Връзка която отговаря за управлението на всички дейности, за да може да комуникира с базата данни, а другата е DeviceManager който е отговорен за осигуряването на начина, по който ще комуникираме с него. Ако сме изпълнили стъпките правилно, трябва да видим следното съобщение, когато изпълняваме нашия пример в конзолата:

Увеличете

Имаме всичко готово да започнем да тестваме нашите заявки, за това ще ни трябват няколко неща, първото, което вече имаме, е обектът, който прави връзката с База данни, тогава ще трябва да импортираме пакетите Изявление Y ResultSet с които първо можем да изпращаме заявки и след това да получим отговора на същото, накрая преминаваме през обекта ResultSet където ще покажем данните, вмъкнати в таблицата и преди затварянето на програмата трябва да затворим всеки от обектите, които сме създали, по този начин ще гарантираме целостта на нашите данни. Нека да видим кода, който показва обяснението:
 импортиране на java.sql.Connection; импортиране на java.sql.DriverManager; импортиране на java.sql.ResultSet; импортиране на java.sql.Statement; публичен клас ConnectionTest {private static final String path = "jdbc: mysql: // localhost / test"; private static final String user = "наш потребител"; private static final String password = "нашата парола"; публичен static void main (String [] args) {try {Connection con = DriverManager.getConnection (път, потребител, парола); Заявка за изявление = con.createStatement (); System.out.println ("Връзката е успешна"); ResultSet резултат = query.executeQuery ("SELECT * FROM users"); while (result.next ()) {Име на низ = резултат.getString ("име"); Низ дата = result.getString ("дата"); System.out.println ("Име:" + име + "Дата на запис:" + дата); } result.close (); query.close (); con.close (); } catch (Изключение д) {e.printStackTrace (); }}} 

Важно е да споменем това в нашия атрибут маршрут Променихме го и името на База данни обади се тест където трябва да създадем нашата потребителска таблица, да компилираме нашия файл и да го изпълним, резултатът от конзолата ще бъде както се вижда на следното изображение:

Увеличете

След като наблюдавахме примера за връзката и заявките към базата данни, можем да видим, че трябва да използваме цифра, наречена Подгответе изявление което улеснява нашата работа, като оставяме заявките подготвени, така че да можем да ги изпълняваме няколко пъти, без да се налага да ги изграждаме отново и отново, за да постигнем тази динамика, заместваме стойностите, които трябва да променим, за променливи и след това, когато изпълняваме заявка, ние му предаваме реалните стойности.
ПредимствоТова има няколко предимства, вече казахме, че първото е да можем да използваме нещо, без да го повтаряме, но също така е и за сигурност, тъй като това ни позволява да третираме стойностите, които евентуално идват от въвеждането от потребителя, за да избегнем атака срещу нашия База данни, освен че можем да улесним и четимостта на нашата програма.
В следния пример ще създадем заявка с Подготвено изявление, така че да може да се използва няколко пъти по време на нашата програма. Нека видим получения код:
 импортиране на java.sql.Connection; импортиране на java.sql.DriverManager; импортиране на java.sql.ResultSet; импортиране на java.sql.PreparedStatement; публичен клас PreparedStatementTest {private static final String path = "jdbc: mysql: // localhost / test"; private static final String user = "наш потребител"; private static final String password = "нашата парола"; публичен static void main (String [] args) {try {Connection con = DriverManager.getConnection (път, потребител, парола); PreparedStatement заявка = con.prepareStatement ("SELECT * FROM users Where id = ?;"); System.out.println ("Връзката е успешна"); query.setInt (1, 1); ResultSet резултат = query.executeQuery (); while (result.next ()) {Име на низ = резултат.getString ("име"); Низ дата = result.getString ("дата"); System.out.println ("Име:" + име + "Дата на запис:" + дата); } result.close (); query.close (); con.close (); } catch (Изключение д) {e.printStackTrace (); }}} 

Забелязваме, че използвайки метода setInt С обекта на заявката можем да предадем необходимия параметър за заявката, с това можем да го отделим от изпълнението на заявката, като по този начин спечелим преносимост и лекота на четене. За да завършим, компилираме и изпълняваме нашата програма:

Увеличете

С това завършваме този урок, тъй като виждаме опциите за работа Бази данни в Java Те са много интересни, тъй като ни позволяват да включим гъвкавост и гъвкавост в нашите приложения, най -важното е, че ако имаме опит с други езици, той със сигурност ще бъде използван тук.

Така ще помогнете за развитието на сайта, сподели с приятелите си

wave wave wave wave wave