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