Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
J
java_dzienna_15_09
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Patryk Czarnik
java_dzienna_15_09
Commits
53fbe75e
Commit
53fbe75e
authored
Sep 16, 2022
by
Patryk Czarnik
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Pierwsze przykłady łączenie z postgresql.
parent
05c2619e
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
110 additions
and
10 deletions
+110
-10
pom.xml
PC24-BazyDanych/pom.xml
+14
-1
Hello.java
PC24-BazyDanych/src/main/java/hello/Hello.java
+0
-9
Odczyt1.java
...-BazyDanych/src/main/java/zajecia/postgresql/Odczyt1.java
+61
-0
Odczyt2.java
...-BazyDanych/src/main/java/zajecia/postgresql/Odczyt2.java
+35
-0
No files found.
PC24-BazyDanych/pom.xml
View file @
53fbe75e
...
...
@@ -10,4 +10,16 @@
<project.build.sourceEncoding>
UTF-8
</project.build.sourceEncoding>
</properties>
</project>
<dependencies>
<dependency>
<groupId>
org.postgresql
</groupId>
<artifactId>
postgresql
</artifactId>
<version>
42.5.0
</version>
<scope>
runtime
</scope>
<!-- Zależność dodawana tylko na czas wykonania programu.
Do klas wchodzących w skład biblioteki nie wolno odwoływać się bezpośrednio w kodzie źródłowym.
-->
</dependency>
</dependencies>
</project>
\ No newline at end of file
PC24-BazyDanych/src/main/java/hello/Hello.java
deleted
100644 → 0
View file @
05c2619e
package
hello
;
public
class
Hello
{
public
static
void
main
(
String
[]
args
)
{
System
.
out
.
println
(
"Hello"
);
}
}
PC24-BazyDanych/src/main/java/zajecia/postgresql/Odczyt1.java
0 → 100644
View file @
53fbe75e
package
zajecia
.
postgresql
;
import
java.math.BigDecimal
;
import
java.sql.Connection
;
import
java.sql.DriverManager
;
import
java.sql.ResultSet
;
import
java.sql.SQLException
;
import
java.sql.Statement
;
// JDBC - Java Database Connectivity
// Podstawowy sposób łączenia się z SQL-owymi bazami danych w Javie.
// Umożliwia i wymaga pisania bezpośrednio komend SQL do wykonania.
// Daje ujednolicony interfejs programistyczny niezależny od rodzaju bazy danych.
// W Javie używa się głównie interfejsów, ale do projektu trzeba dodać STEROWNIK
// obsługujący konkretny rodzaj bazy danych - zawiera on implementacje tych interfejsów.
public
class
Odczyt1
{
public
static
void
main
(
String
[]
args
)
{
try
{
// Koncepcyjnie rzecz biorąc tworzymy obiekt takiej klasy:
// org.postgresql.jdbc.PgConnection c = new org.postgresql.jdbc.PgConnection(null, null, "jdbc:postgresql://localhost:5432/hr");
// Ale zapisuje się to w ten sposób, za pomocą klas i interfejsów, które są częścią ogólnego API JDBC
Connection
c
=
DriverManager
.
getConnection
(
"jdbc:postgresql://localhost:5432/hr"
,
"kurs"
,
"abc123"
);
System
.
out
.
println
(
"Udało się połączyć, c = "
+
c
);
// Statement to obiekt służący do wykonywania poleceń SQL.
Statement
stmt
=
c
.
createStatement
();
// execute - ogólne wykonanie jakiegoś kodu SQL
// executeQuery - wykonanie zapytania, które zwraca wynik, w praktyce: SELECT
ResultSet
rs
=
stmt
.
executeQuery
(
"SELECT * FROM employees"
);
System
.
out
.
println
(
"Mam wyniki: "
+
rs
);
System
.
out
.
println
();
// ResultSet daje dostęp do wyników. Zgodnie z teorią SQL jest to "kursor", który pozwala przejrzeć wyniki.
// Jeśli chcemy odczytać wszystkie wiersze wynikowe, to typym zapisem jest taka pętla:
// rs.next() - próbuje przejść do nast wiersza i zwraca true, jeśli się udało, a false jeśli to już koniec danych
while
(
rs
.
next
())
{
// w obrębie pętli za pomocą rs.getTYPDANYCH(KOLUMNA) odczytujemy wartości poszczególnych pól
// Można podać numer kolumny licząc od 1, albo nazwę.
int
id
=
rs
.
getInt
(
1
);
String
firstName
=
rs
.
getString
(
2
);
String
lastName
=
rs
.
getString
(
3
);
BigDecimal
salary
=
rs
.
getBigDecimal
(
"salary"
);
System
.
out
.
println
(
"Pracownik nr "
+
id
+
": "
+
firstName
+
" "
+
lastName
+
" zarabia "
+
salary
);
}
// Połączenie należy zamknąć, ale "zamykalne" są też obiekty Statement i ResultSet.
// Prawidłowo zamykając wszystkie te obiekty możemy poprawić wydajność całej bazy danych.
rs
.
close
();
stmt
.
close
();
c
.
close
();
}
catch
(
SQLException
e
)
{
e
.
printStackTrace
();
}
}
}
PC24-BazyDanych/src/main/java/zajecia/postgresql/Odczyt2.java
0 → 100644
View file @
53fbe75e
package
zajecia
.
postgresql
;
import
java.math.BigDecimal
;
import
java.sql.Connection
;
import
java.sql.DriverManager
;
import
java.sql.PreparedStatement
;
import
java.sql.ResultSet
;
import
java.sql.SQLException
;
public
class
Odczyt2
{
// W tej wersji:
// - stosujemy try-with-resources, aby prawidłowo zamknąć połączenie i pozostałe zasoby
// - zamiast Statement używamy PreparedStatement - wersja, w której zapytanie SQL podaje się wcześniej,
// w prepareStatement, a nie dopiero w executeQuery
// Jeden obiekt prepareStatement może być używany wielokrotnie; można przekazywać parametry, o czym później.
// - Podajemy nazwy kolumn, a nie numery.
public
static
void
main
(
String
[]
args
)
{
try
(
Connection
c
=
DriverManager
.
getConnection
(
"jdbc:postgresql://localhost:5432/hr"
,
"kurs"
,
"abc123"
);
PreparedStatement
stmt
=
c
.
prepareStatement
(
"SELECT * FROM employees"
);
ResultSet
rs
=
stmt
.
executeQuery
())
{
while
(
rs
.
next
())
{
int
id
=
rs
.
getInt
(
"employee_id"
);
String
firstName
=
rs
.
getString
(
"first_name"
);
String
lastName
=
rs
.
getString
(
"last_name"
);
BigDecimal
salary
=
rs
.
getBigDecimal
(
"salary"
);
System
.
out
.
println
(
"Pracownik nr "
+
id
+
": "
+
firstName
+
" "
+
lastName
+
" zarabia "
+
salary
);
}
}
catch
(
SQLException
e
)
{
e
.
printStackTrace
();
}
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment