Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
A
alx_mszczonow_1
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
alx_mszczonow_1
Commits
d51370ff
Commit
d51370ff
authored
Jul 24, 2023
by
Patryk Czarnik
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
UPDATE
parent
b979144c
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
131 additions
and
0 deletions
+131
-0
PodwyzkaBezTransakcji.java
src/main/java/bazy/a_poczatek/PodwyzkaBezTransakcji.java
+41
-0
PodwyzkaWTransakcji.java
src/main/java/bazy/a_poczatek/PodwyzkaWTransakcji.java
+90
-0
No files found.
src/main/java/bazy/a_poczatek/PodwyzkaBezTransakcji.java
0 → 100644
View file @
d51370ff
package
bazy
.
a_poczatek
;
import
java.math.BigDecimal
;
import
java.sql.Connection
;
import
java.sql.DriverManager
;
import
java.sql.PreparedStatement
;
import
java.sql.SQLException
;
import
javax.swing.JOptionPane
;
/* W tej wersji operacje na bazie wykonywane są w trybie "auto commit",
* czyli gdy program wykona polecenie UPDATE (i nie ma żadnego błędu), to OD RAZU zmiany są zapisywane w bazie.
*
* To jest domyślny sposób działanie połączeń w Javie/JDBC.
*/
public
class
PodwyzkaBezTransakcji
{
public
static
void
main
(
String
[]
args
)
{
final
String
url
=
"jdbc:postgresql://localhost/hr"
;
try
(
Connection
c
=
DriverManager
.
getConnection
(
url
,
"kurs"
,
"abc123"
))
{
String
job
=
JOptionPane
.
showInputDialog
(
"Komu dać podwyżkę?\nPodaj job_id:"
);
BigDecimal
zmiana
=
new
BigDecimal
(
JOptionPane
.
showInputDialog
(
"Podaj kwotę podwyżki"
));
zmienPensje
(
c
,
job
,
zmiana
);
JOptionPane
.
showMessageDialog
(
null
,
"Gotowe"
);
}
catch
(
SQLException
e
)
{
e
.
printStackTrace
();
}
}
private
static
void
zmienPensje
(
Connection
c
,
String
job
,
BigDecimal
zmiana
)
throws
SQLException
{
final
String
sql
=
"UPDATE employees SET salary = salary + ? WHERE job_id = ?"
;
try
(
PreparedStatement
stmt
=
c
.
prepareStatement
(
sql
))
{
stmt
.
setBigDecimal
(
1
,
zmiana
);
stmt
.
setString
(
2
,
job
);
stmt
.
executeUpdate
();
}
}
}
src/main/java/bazy/a_poczatek/PodwyzkaWTransakcji.java
0 → 100644
View file @
d51370ff
package
bazy
.
a_poczatek
;
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
java.util.ArrayList
;
import
java.util.List
;
import
javax.swing.JOptionPane
;
/* W tej wersji program korzysta z bazy danych "w transakcji", co oznacza,
* że dopóki nie zatwierdzi zmian (commit), zmiany te nie są widoczne dla innych klientów,
* nie są zapisane w sposób trwały, można je wycofać.
*/
public
class
PodwyzkaWTransakcji
{
public
static
void
main
(
String
[]
args
)
{
final
String
url
=
"jdbc:postgresql://localhost/hr"
;
try
(
Connection
c
=
DriverManager
.
getConnection
(
url
,
"kurs"
,
"abc123"
))
{
// wyłączam tryb auto-commit, wchodzę w tryb transakcji
c
.
setAutoCommit
(
false
);
List
<
String
>
jobs
=
znajdzJoby
(
c
);
String
job
=
(
String
)
JOptionPane
.
showInputDialog
(
null
,
"Wybierz job"
,
"Komu dać podwyżkę?"
,
JOptionPane
.
QUESTION_MESSAGE
,
null
,
jobs
.
toArray
(),
null
);
double
avg1
=
sredniaPensja
(
c
,
job
);
JOptionPane
.
showMessageDialog
(
null
,
"Średnia pensja na stanowisku "
+
job
+
" wynosi teraz "
+
avg1
);
BigDecimal
zmiana
=
new
BigDecimal
(
JOptionPane
.
showInputDialog
(
"Podaj kwotę podwyżki"
));
zmienPensje
(
c
,
job
,
zmiana
);
double
avg2
=
sredniaPensja
(
c
,
job
);
JOptionPane
.
showMessageDialog
(
null
,
"Średnia pensja na stanowisku "
+
job
+
" wynosi teraz "
+
avg2
);
int
wybor
=
JOptionPane
.
showConfirmDialog
(
null
,
"Czy zatwierdzić zmiany?"
);
switch
(
wybor
)
{
case
JOptionPane
.
YES_OPTION
->
c
.
commit
();
case
JOptionPane
.
NO_OPTION
->
c
.
rollback
();
default
->
{}
}
double
avg3
=
sredniaPensja
(
c
,
job
);
JOptionPane
.
showMessageDialog
(
null
,
"Średnia pensja na stanowisku "
+
job
+
" wynosi teraz "
+
avg3
);
JOptionPane
.
showMessageDialog
(
null
,
"Koniec programu, zaraz sie rozłączę..."
);
}
catch
(
SQLException
e
)
{
e
.
printStackTrace
();
}
}
private
static
double
sredniaPensja
(
Connection
c
,
String
job
)
throws
SQLException
{
String
sql
=
"SELECT avg(salary) FROM employees WHERE job_id = ?"
;
try
(
PreparedStatement
stmt
=
c
.
prepareStatement
(
sql
))
{
stmt
.
setString
(
1
,
job
);
try
(
ResultSet
rs
=
stmt
.
executeQuery
())
{
if
(
rs
.
next
())
{
return
rs
.
getDouble
(
1
);
}
}
}
return
0.0
;
}
private
static
List
<
String
>
znajdzJoby
(
Connection
c
)
throws
SQLException
{
List
<
String
>
jobs
=
new
ArrayList
<>();
try
(
PreparedStatement
stmt
=
c
.
prepareStatement
(
"SELECT DISTINCT job_id FROM employees ORDER BY 1"
);
ResultSet
rs
=
stmt
.
executeQuery
())
{
while
(
rs
.
next
())
{
jobs
.
add
(
rs
.
getString
(
1
));
}
}
return
jobs
;
}
private
static
void
zmienPensje
(
Connection
c
,
String
job
,
BigDecimal
zmiana
)
throws
SQLException
{
final
String
sql
=
"UPDATE employees SET salary = salary + ? WHERE job_id = ?"
;
try
(
PreparedStatement
stmt
=
c
.
prepareStatement
(
sql
))
{
stmt
.
setBigDecimal
(
1
,
zmiana
);
stmt
.
setString
(
2
,
job
);
int
ile
=
stmt
.
executeUpdate
();
JOptionPane
.
showMessageDialog
(
null
,
"UPDATE wykonany. Zmieniono "
+
ile
+
" rekordów."
);
}
}
}
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