Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
2
20240528-BJava
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
20240528-BJava
Commits
51cdd831
Commit
51cdd831
authored
May 29, 2024
by
Patryk Czarnik
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
SQLite i inne bazy
parent
3b8eb135
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
305 additions
and
2 deletions
+305
-2
pom.xml
PC22-BazyDanych/pom.xml
+6
-2
Oracle.java
PC22-BazyDanych/src/main/java/gotowe/inne_bazy/Oracle.java
+33
-0
SQLServer.java
...-BazyDanych/src/main/java/gotowe/inne_bazy/SQLServer.java
+27
-0
P01_Polaczenie.java
...azyDanych/src/main/java/gotowe/sqlite/P01_Polaczenie.java
+33
-0
P02_Odczyt.java
PC22-BazyDanych/src/main/java/gotowe/sqlite/P02_Odczyt.java
+37
-0
P03_Odczyt.java
PC22-BazyDanych/src/main/java/gotowe/sqlite/P03_Odczyt.java
+35
-0
P04_Parametry.java
...BazyDanych/src/main/java/gotowe/sqlite/P04_Parametry.java
+52
-0
P05_DanePracownika.java
...anych/src/main/java/gotowe/sqlite/P05_DanePracownika.java
+51
-0
P06_Podwyzka.java
...-BazyDanych/src/main/java/gotowe/sqlite/P06_Podwyzka.java
+31
-0
No files found.
PC22-BazyDanych/pom.xml
View file @
51cdd831
...
...
@@ -21,6 +21,11 @@
<version>
42.7.3
</version>
<scope>
runtime
</scope>
</dependency>
<dependency>
<groupId>
org.xerial
</groupId>
<artifactId>
sqlite-jdbc
</artifactId>
<version>
3.46.0.0
</version>
<scope>
runtime
</scope>
</dependency>
</dependencies>
</project>
\ No newline at end of file
PC22-BazyDanych/src/main/java/gotowe/inne_bazy/Oracle.java
0 → 100644
View file @
51cdd831
package
gotowe
.
inne_bazy
;
import
java.sql.Connection
;
import
java.sql.DriverManager
;
import
java.sql.ResultSet
;
import
java.sql.SQLException
;
import
java.sql.Statement
;
/* Łączenie z bazą Oracle wymaga:
* - sterownika Oracle JDBC (OJDBC)
* - wpisania odpowiedniego URL-a, poniżej przykład, który zadziałał dla Oracle 11 eXpress Edition
*/
public
class
Oracle
{
public
static
void
main
(
String
[]
args
)
{
final
String
url
=
"jdbc:oracle:thin:@//10.0.15.13:1521/xe"
;
try
(
Connection
con
=
DriverManager
.
getConnection
(
url
,
"HR"
,
"abc123"
))
{
try
(
Statement
st
=
con
.
createStatement
())
{
final
String
sql
=
"SELECT * FROM countries"
;
try
(
ResultSet
rs
=
st
.
executeQuery
(
sql
))
{
while
(
rs
.
next
())
{
System
.
out
.
print
(
rs
.
getString
(
1
));
System
.
out
.
print
(
" "
);
System
.
out
.
println
(
rs
.
getString
(
"country_name"
));
}
}
}
}
catch
(
SQLException
e
)
{
e
.
printStackTrace
();
}
}
}
PC22-BazyDanych/src/main/java/gotowe/inne_bazy/SQLServer.java
0 → 100644
View file @
51cdd831
package
gotowe
.
inne_bazy
;
import
java.sql.Connection
;
import
java.sql.DriverManager
;
import
java.sql.PreparedStatement
;
import
java.sql.ResultSet
;
import
java.sql.SQLException
;
public
class
SQLServer
{
public
static
void
main
(
String
[]
args
)
{
try
(
Connection
cn
=
DriverManager
.
getConnection
(
"jdbc:sqlserver://localhost:1433;database=HR;user=KURS;password=abc123"
);
PreparedStatement
stmt
=
cn
.
prepareStatement
(
"SELECT * FROM employees"
);
ResultSet
rs
=
stmt
.
executeQuery
())
{
while
(
rs
.
next
())
{
int
a
=
rs
.
getInt
(
1
);
String
b
=
rs
.
getString
(
2
);
String
c
=
rs
.
getString
(
3
);
System
.
out
.
println
(
a
+
" "
+
b
+
" "
+
c
);
}
}
catch
(
SQLException
e
)
{
e
.
printStackTrace
();
}
}
}
PC22-BazyDanych/src/main/java/gotowe/sqlite/P01_Polaczenie.java
0 → 100644
View file @
51cdd831
package
gotowe
.
sqlite
;
import
java.sql.Connection
;
import
java.sql.DatabaseMetaData
;
import
java.sql.DriverManager
;
import
java.sql.SQLException
;
public
class
P01_Polaczenie
{
public
static
void
main
(
String
[]
args
)
{
// JDBC
try
{
Connection
connection
=
DriverManager
.
getConnection
(
"jdbc:sqlite:hr.db"
);
System
.
out
.
println
(
"Nawiązano połączenie "
+
connection
);
System
.
out
.
println
(
"Klasa: "
+
connection
.
getClass
().
getName
());
DatabaseMetaData
metaData
=
connection
.
getMetaData
();
System
.
out
.
println
(
metaData
.
getDatabaseProductName
());
System
.
out
.
println
(
metaData
.
getDatabaseMajorVersion
()
+
" "
+
metaData
.
getDatabaseMinorVersion
());
// da się też odczytać listę wszystkich tabel, informacje o tabelach...
connection
.
close
();
}
catch
(
SQLException
e
)
{
e
.
printStackTrace
();
}
}
}
PC22-BazyDanych/src/main/java/gotowe/sqlite/P02_Odczyt.java
0 → 100644
View file @
51cdd831
package
gotowe
.
sqlite
;
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
P02_Odczyt
{
public
static
void
main
(
String
[]
args
)
{
try
{
Connection
c
=
DriverManager
.
getConnection
(
"jdbc:sqlite:hr.db"
);
PreparedStatement
stmt
=
c
.
prepareStatement
(
"SELECT * FROM employees"
);
ResultSet
rs
=
stmt
.
executeQuery
();
while
(
rs
.
next
())
{
// można odczytać kolumny wg numeru - numeracja od 1
String
imie
=
rs
.
getString
(
2
);
// można też używać nazwy kolumny
String
nazwisko
=
rs
.
getString
(
"last_name"
);
BigDecimal
pensja
=
rs
.
getBigDecimal
(
"salary"
);
System
.
out
.
println
(
imie
+
" "
+
nazwisko
+
" zarabia "
+
pensja
);
}
rs
.
close
();
stmt
.
close
();
c
.
close
();
}
catch
(
SQLException
e
)
{
e
.
printStackTrace
();
}
}
}
PC22-BazyDanych/src/main/java/gotowe/sqlite/P03_Odczyt.java
0 → 100644
View file @
51cdd831
package
gotowe
.
sqlite
;
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
P03_Odczyt
{
public
static
void
main
(
String
[]
args
)
{
final
String
sql
=
"SELECT * FROM employees ORDER BY employee_id"
;
try
(
Connection
c
=
DriverManager
.
getConnection
(
"jdbc:sqlite:hr.db"
);
PreparedStatement
stmt
=
c
.
prepareStatement
(
sql
);
ResultSet
rs
=
stmt
.
executeQuery
())
{
while
(
rs
.
next
())
{
// można odczytać kolumny wg numeru - numeracja od 1
String
imie
=
rs
.
getString
(
2
);
// można też używać nazwy kolumny
String
nazwisko
=
rs
.
getString
(
"last_name"
);
BigDecimal
pensja
=
rs
.
getBigDecimal
(
"salary"
);
String
data
=
rs
.
getString
(
"hire_date"
);
int
id
=
rs
.
getInt
(
"employee_id"
);
System
.
out
.
printf
(
"%-15s %-15s (%3d) - zatr. %s, pensja %8s\n"
,
imie
,
nazwisko
,
id
,
data
,
pensja
);
}
}
catch
(
SQLException
e
)
{
e
.
printStackTrace
();
}
}
}
PC22-BazyDanych/src/main/java/gotowe/sqlite/P04_Parametry.java
0 → 100644
View file @
51cdd831
package
gotowe
.
sqlite
;
import
java.math.BigDecimal
;
import
java.sql.Connection
;
import
java.sql.DriverManager
;
import
java.sql.PreparedStatement
;
import
java.sql.ResultSet
;
import
java.sql.SQLException
;
import
javax.swing.JOptionPane
;
public
class
P04_Parametry
{
public
static
void
main
(
String
[]
args
)
{
String
szukani
=
JOptionPane
.
showInputDialog
(
"Podaj kod stanowiska"
);
szukani
=
szukani
.
toUpperCase
();
// Przykład SQL injection, które zadziałałoby w wersji ze sklejaniem stringów:
// a'; DROP TABLE job_history; SELECT 'ala
// final String sql = "SELECT * FROM employees WHERE job_id = '" + szukani + "'";
// Właściwe podejście: użyć znaków zapytania i metod PreparedStatement.setXXX aby ustawić wartość parametru.
final
String
sql
=
"SELECT * FROM employees WHERE job_id = ?"
;
try
(
Connection
c
=
DriverManager
.
getConnection
(
"jdbc:sqlite:hr.db"
);
PreparedStatement
stmt
=
c
.
prepareStatement
(
sql
))
{
stmt
.
setString
(
1
,
szukani
);
try
(
ResultSet
rs
=
stmt
.
executeQuery
())
{
while
(
rs
.
next
())
{
// można odczytać kolumny wg numeru - numeracja od 1
String
imie
=
rs
.
getString
(
2
);
// można też używać nazwy kolumny
String
nazwisko
=
rs
.
getString
(
"last_name"
);
BigDecimal
pensja
=
rs
.
getBigDecimal
(
"salary"
);
String
data
=
rs
.
getString
(
"hire_date"
);
int
id
=
rs
.
getInt
(
"employee_id"
);
String
job
=
rs
.
getString
(
"job_id"
);
System
.
out
.
printf
(
"%-15s %-15s (%3d) - zatr. %s, pensja %8s, %s\n"
,
imie
,
nazwisko
,
id
,
data
,
pensja
,
job
);
}
}
}
catch
(
SQLException
e
)
{
e
.
printStackTrace
();
}
}
}
PC22-BazyDanych/src/main/java/gotowe/sqlite/P05_DanePracownika.java
0 → 100644
View file @
51cdd831
package
gotowe
.
sqlite
;
import
java.sql.Connection
;
import
java.sql.DriverManager
;
import
java.sql.PreparedStatement
;
import
java.sql.ResultSet
;
import
java.sql.SQLException
;
import
javax.swing.JOptionPane
;
public
class
P05_DanePracownika
{
public
static
void
main
(
String
[]
args
)
{
String
s
=
JOptionPane
.
showInputDialog
(
"Podaj id pracownika"
);
int
id
=
Integer
.
parseInt
(
s
);
// program ma:
// połączyć się z bazą,
// zadać zapytanie (z JOIN i WHERE)
// i wypisać dane tego pracownika:
// first_name, last_name, department_name, street_address, city
// (z tabel employees, departments, locations)
final
String
sql
=
"SELECT first_name, last_name, department_name, street_address, city "
+
"FROM employees"
+
" LEFT JOIN departments USING(department_id)"
+
" LEFT JOIN locations USING(location_id)"
+
"WHERE employee_id = ?"
;
try
(
Connection
c
=
DriverManager
.
getConnection
(
"jdbc:sqlite:hr.db"
);
PreparedStatement
stmt
=
c
.
prepareStatement
(
sql
))
{
stmt
.
setInt
(
1
,
id
);
try
(
ResultSet
rs
=
stmt
.
executeQuery
())
{
if
(
rs
.
next
())
{
System
.
out
.
printf
(
"%s %s %s %s %s\n"
,
rs
.
getString
(
1
),
rs
.
getString
(
2
),
rs
.
getString
(
3
),
rs
.
getString
(
4
),
rs
.
getString
(
5
));
}
else
{
System
.
out
.
println
(
"Nie znaleziono takiego pracownika"
);
}
}
}
catch
(
SQLException
e
)
{
e
.
printStackTrace
();
}
}
}
PC22-BazyDanych/src/main/java/gotowe/sqlite/P06_Podwyzka.java
0 → 100644
View file @
51cdd831
package
gotowe
.
sqlite
;
import
java.sql.Connection
;
import
java.sql.DriverManager
;
import
java.sql.PreparedStatement
;
import
java.sql.SQLException
;
public
class
P06_Podwyzka
{
public
static
void
main
(
String
[]
args
)
{
String
job
=
"IT_PROG"
;
int
zmiana
=
250
;
final
String
sql
=
"UPDATE employees SET salary = salary + ? WHERE job_id = ?"
;
try
(
Connection
c
=
DriverManager
.
getConnection
(
"jdbc:sqlite:hr.db"
);
PreparedStatement
stmt
=
c
.
prepareStatement
(
sql
))
{
stmt
.
setInt
(
1
,
zmiana
);
stmt
.
setString
(
2
,
job
);
// Także dla poleceń jak INSERT, DELETE czy ALTER TABLE użylibyśmy executeUpdate
int
ile
=
stmt
.
executeUpdate
();
System
.
out
.
println
(
"Zmodyfikowano "
+
ile
+
" rekordów."
);
}
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