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
5feeadb8
Commit
5feeadb8
authored
Jun 27, 2024
by
Patryk Czarnik
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Przykłady BLOB
parent
df6c0198
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
253 additions
and
2 deletions
+253
-2
P02_Odczyt_Try.java
...anych/src/main/java/gotowe/postgresql/P02_Odczyt_Try.java
+4
-1
P07_GenerowaneId.java
...ych/src/main/java/gotowe/postgresql/P07_GenerowaneId.java
+1
-1
P08a_ModyfikacjaPoprzezWynik.java
.../java/gotowe/postgresql/P08a_ModyfikacjaPoprzezWynik.java
+1
-0
P13a_Blob_Create.java
...ych/src/main/java/gotowe/postgresql/P13a_Blob_Create.java
+29
-0
P13b_Blob_Insert.java
...ych/src/main/java/gotowe/postgresql/P13b_Blob_Insert.java
+65
-0
P13c_Blob_Download.java
...h/src/main/java/gotowe/postgresql/P13c_Blob_Download.java
+55
-0
P13d_Blob_Download.java
...h/src/main/java/gotowe/postgresql/P13d_Blob_Download.java
+61
-0
P13e_Blob_Show.java
...anych/src/main/java/gotowe/postgresql/P13e_Blob_Show.java
+37
-0
No files found.
PC22-BazyDanych/src/main/java/gotowe/postgresql/P02_Odczyt_Try.java
View file @
5feeadb8
...
...
@@ -24,8 +24,11 @@ public class P02_Odczyt_Try {
BigDecimal
salary
=
rs
.
getBigDecimal
(
"salary"
);
Date
date
=
rs
.
getDate
(
"hire_date"
);
LocalDate
localDate
=
date
.
toLocalDate
();
// numer wiersza
int
nr
=
rs
.
getRow
();
System
.
out
.
printf
(
"%
d %s %s %s %s %s%n"
,
id
,
firstName
,
lastName
,
jobId
,
salary
,
date
);
System
.
out
.
printf
(
"%
3d. %d %s %s %s %s %s%n"
,
nr
,
id
,
firstName
,
lastName
,
jobId
,
salary
,
date
);
}
}
catch
(
SQLException
e
)
{
e
.
printStackTrace
();
...
...
PC22-BazyDanych/src/main/java/gotowe/postgresql/P07_GenerowaneId.java
View file @
5feeadb8
...
...
@@ -9,7 +9,7 @@ import java.time.LocalTime;
import
java.time.format.DateTimeFormatter
;
public
class
P07_GenerowaneId
{
/* W
abzach danych często stosowane są automatycznie generowane klucze. Gdy wykom
nujemy polecenie INSERT nie wymieniając kolumny z kluczem,
/* W
bazach danych często stosowane są automatycznie generowane klucze. Gdy wyko
nujemy polecenie INSERT nie wymieniając kolumny z kluczem,
* jego wartość jest generowana automatycznie (z sekwencji lub w oparciu o specjalny typ kolumny).
* Ale aplikacja zwykle potrzebuje poznać to ID, aby móc odwoływać się do tego rekordu w dalszej części programu.
* JDBC oferuje mechanizm, w którym przed wykonaniem operacji INSERT w obiekcie Statement rejestruje się automatycznie generowane kolumny,
...
...
PC22-BazyDanych/src/main/java/gotowe/postgresql/P08a_ModyfikacjaPoprzezWynik.java
View file @
5feeadb8
...
...
@@ -19,6 +19,7 @@ public class P08a_ModyfikacjaPoprzezWynik {
stmt
.
setInt
(
1
,
limit
);
try
(
ResultSet
rs
=
stmt
.
executeQuery
())
{
System
.
out
.
println
(
"Nazwa kursora: "
+
rs
.
getCursorName
());
while
(
rs
.
next
())
{
try
{
Thread
.
sleep
(
2000
);
...
...
PC22-BazyDanych/src/main/java/gotowe/postgresql/P13a_Blob_Create.java
0 → 100644
View file @
5feeadb8
package
gotowe
.
postgresql
;
import
java.sql.Connection
;
import
java.sql.DriverManager
;
import
java.sql.SQLException
;
import
java.sql.Statement
;
public
class
P13a_Blob_Create
{
public
static
void
main
(
String
[]
args
)
{
final
String
sql
=
"""
DROP TABLE IF EXISTS photos;
CREATE TABLE photos(
photo_id SERIAL PRIMARY KEY,
file_name VARCHAR(60) NOT NULL,
bytes BYTEA NOT NULL
)
"""
;
try
(
Connection
c
=
DriverManager
.
getConnection
(
Ustawienia
.
URL
,
Ustawienia
.
USER
,
Ustawienia
.
PASSWD
);
Statement
stmt
=
c
.
createStatement
())
{
stmt
.
execute
(
sql
);
System
.
out
.
println
(
"Gotowe"
);
}
catch
(
SQLException
e
)
{
e
.
printStackTrace
();
}
}
}
PC22-BazyDanych/src/main/java/gotowe/postgresql/P13b_Blob_Insert.java
0 → 100644
View file @
5feeadb8
package
gotowe
.
postgresql
;
import
java.io.File
;
import
java.io.FileInputStream
;
import
java.io.IOException
;
import
java.io.InputStream
;
import
java.sql.Connection
;
import
java.sql.DriverManager
;
import
java.sql.PreparedStatement
;
import
java.sql.ResultSet
;
import
java.sql.SQLException
;
import
javax.swing.JFileChooser
;
import
javax.swing.JOptionPane
;
import
javax.swing.filechooser.FileNameExtensionFilter
;
public
class
P13b_Blob_Insert
{
public
static
void
main
(
String
[]
args
)
{
String
[]
polaGenerowane
=
{
"photo_id"
};
String
sql
=
"INSERT INTO photos(file_name, bytes) VALUES(?, ?)"
;
JFileChooser
fileChooser
=
new
JFileChooser
(
"."
);
fileChooser
.
setDialogTitle
(
"Wybierz plik"
);
fileChooser
.
setFileFilter
(
new
FileNameExtensionFilter
(
"Pliki graficzne"
,
"jpg"
,
"jpeg"
,
"png"
,
"bmp"
));
try
(
Connection
c
=
DriverManager
.
getConnection
(
Ustawienia
.
URL
,
Ustawienia
.
USER
,
Ustawienia
.
PASSWD
))
{
// org.postgresql.util.PSQLException: Large Objects may not be used in auto-commit mode
c
.
setAutoCommit
(
false
);
try
(
PreparedStatement
stmt
=
c
.
prepareStatement
(
sql
,
polaGenerowane
))
{
while
(
true
)
{
int
wybor
=
fileChooser
.
showOpenDialog
(
null
);
if
(
wybor
==
JFileChooser
.
CANCEL_OPTION
)
break
;
if
(
wybor
==
JFileChooser
.
ERROR_OPTION
)
continue
;
File
selectedFile
=
fileChooser
.
getSelectedFile
();
try
(
InputStream
input
=
new
FileInputStream
(
selectedFile
))
{
stmt
.
setString
(
1
,
selectedFile
.
getName
());
//stmt.setBlob(2, input);
stmt
.
setBinaryStream
(
2
,
input
);
int
ile
=
stmt
.
executeUpdate
();
try
(
ResultSet
generatedKeys
=
stmt
.
getGeneratedKeys
())
{
if
(
ile
==
1
&&
generatedKeys
.
next
())
{
int
id
=
generatedKeys
.
getInt
(
1
);
JOptionPane
.
showMessageDialog
(
null
,
"Dodano zdjęcie "
+
selectedFile
.
getName
()
+
" pod numerem "
+
id
);
}
}
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
}
}
int
wybor
=
JOptionPane
.
showConfirmDialog
(
null
,
"Czy zatwierdzasz zmiany?"
);
switch
(
wybor
)
{
case
JOptionPane
.
YES_OPTION
->
c
.
commit
();
case
JOptionPane
.
NO_OPTION
->
c
.
rollback
();
}
JOptionPane
.
showMessageDialog
(
null
,
"Gotowe"
);
}
catch
(
SQLException
e
)
{
e
.
printStackTrace
();
}
}
}
PC22-BazyDanych/src/main/java/gotowe/postgresql/P13c_Blob_Download.java
0 → 100644
View file @
5feeadb8
package
gotowe
.
postgresql
;
import
java.io.File
;
import
java.io.FileOutputStream
;
import
java.io.IOException
;
import
java.io.InputStream
;
import
java.io.OutputStream
;
import
java.sql.Connection
;
import
java.sql.DriverManager
;
import
java.sql.PreparedStatement
;
import
java.sql.ResultSet
;
import
java.sql.SQLException
;
import
javax.swing.JFileChooser
;
import
javax.swing.JOptionPane
;
import
javax.swing.filechooser.FileNameExtensionFilter
;
public
class
P13c_Blob_Download
{
public
static
void
main
(
String
[]
args
)
{
String
sql
=
"SELECT photo_id, file_name, bytes FROM photos ORDER BY 1"
;
JFileChooser
fileChooser
=
new
JFileChooser
(
"."
);
fileChooser
.
setFileFilter
(
new
FileNameExtensionFilter
(
"Pliki graficzne"
,
"jpg"
,
"jpeg"
,
"png"
,
"bmp"
));
try
(
Connection
c
=
DriverManager
.
getConnection
(
Ustawienia
.
URL
,
Ustawienia
.
USER
,
Ustawienia
.
PASSWD
))
{
// org.postgresql.util.PSQLException: Large Objects may not be used in auto-commit mode
c
.
setAutoCommit
(
false
);
c
.
setReadOnly
(
true
);
try
(
PreparedStatement
stmt
=
c
.
prepareStatement
(
sql
);
ResultSet
rs
=
stmt
.
executeQuery
())
{
while
(
rs
.
next
())
{
int
id
=
rs
.
getInt
(
1
);
String
fileName
=
rs
.
getString
(
2
);
fileChooser
.
setDialogTitle
(
"Zapisz plik nr "
+
id
);
fileChooser
.
setSelectedFile
(
new
File
(
fileName
));
int
wybor
=
fileChooser
.
showSaveDialog
(
null
);
if
(
wybor
!=
JFileChooser
.
APPROVE_OPTION
)
continue
;
File
selectedFile
=
fileChooser
.
getSelectedFile
();
try
(
InputStream
input
=
rs
.
getBinaryStream
(
3
);
OutputStream
output
=
new
FileOutputStream
(
selectedFile
))
{
input
.
transferTo
(
output
);
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
}
}
JOptionPane
.
showMessageDialog
(
null
,
"Gotowe"
);
}
catch
(
SQLException
e
)
{
e
.
printStackTrace
();
}
}
}
PC22-BazyDanych/src/main/java/gotowe/postgresql/P13d_Blob_Download.java
0 → 100644
View file @
5feeadb8
package
gotowe
.
postgresql
;
import
java.io.File
;
import
java.io.FileOutputStream
;
import
java.io.IOException
;
import
java.io.InputStream
;
import
java.io.OutputStream
;
import
java.sql.Blob
;
import
java.sql.Connection
;
import
java.sql.DriverManager
;
import
java.sql.PreparedStatement
;
import
java.sql.ResultSet
;
import
java.sql.SQLException
;
import
javax.swing.JFileChooser
;
import
javax.swing.JOptionPane
;
import
javax.swing.filechooser.FileNameExtensionFilter
;
public
class
P13d_Blob_Download
{
public
static
void
main
(
String
[]
args
)
{
String
sql
=
"SELECT photo_id, file_name, bytes FROM photos ORDER BY 1"
;
JFileChooser
fileChooser
=
new
JFileChooser
(
"."
);
fileChooser
.
setFileFilter
(
new
FileNameExtensionFilter
(
"Pliki graficzne"
,
"jpg"
,
"jpeg"
,
"png"
,
"bmp"
));
try
(
Connection
c
=
DriverManager
.
getConnection
(
Ustawienia
.
URL
,
Ustawienia
.
USER
,
Ustawienia
.
PASSWD
))
{
// org.postgresql.util.PSQLException: Large Objects may not be used in auto-commit mode
c
.
setAutoCommit
(
false
);
c
.
setReadOnly
(
true
);
try
(
PreparedStatement
stmt
=
c
.
prepareStatement
(
sql
);
ResultSet
rs
=
stmt
.
executeQuery
())
{
while
(
rs
.
next
())
{
int
id
=
rs
.
getInt
(
1
);
String
fileName
=
rs
.
getString
(
2
);
Blob
blob
=
rs
.
getBlob
(
3
);
try
{
fileChooser
.
setDialogTitle
(
"Zapisz plik nr "
+
id
);
fileChooser
.
setSelectedFile
(
new
File
(
fileName
));
int
wybor
=
fileChooser
.
showSaveDialog
(
null
);
if
(
wybor
!=
JFileChooser
.
APPROVE_OPTION
)
continue
;
File
selectedFile
=
fileChooser
.
getSelectedFile
();
try
(
InputStream
input
=
blob
.
getBinaryStream
();
OutputStream
output
=
new
FileOutputStream
(
selectedFile
))
{
input
.
transferTo
(
output
);
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
}
finally
{
blob
.
free
();
}
}
}
JOptionPane
.
showMessageDialog
(
null
,
"Gotowe"
);
}
catch
(
SQLException
e
)
{
e
.
printStackTrace
();
}
}
}
PC22-BazyDanych/src/main/java/gotowe/postgresql/P13e_Blob_Show.java
0 → 100644
View file @
5feeadb8
package
gotowe
.
postgresql
;
import
java.sql.Connection
;
import
java.sql.DriverManager
;
import
java.sql.PreparedStatement
;
import
java.sql.ResultSet
;
import
java.sql.SQLException
;
import
javax.swing.ImageIcon
;
import
javax.swing.JOptionPane
;
public
class
P13e_Blob_Show
{
public
static
void
main
(
String
[]
args
)
{
String
sql
=
"SELECT photo_id, file_name, bytes FROM photos ORDER BY 1"
;
try
(
Connection
c
=
DriverManager
.
getConnection
(
Ustawienia
.
URL
,
Ustawienia
.
USER
,
Ustawienia
.
PASSWD
))
{
c
.
setAutoCommit
(
false
);
c
.
setReadOnly
(
true
);
try
(
PreparedStatement
stmt
=
c
.
prepareStatement
(
sql
);
ResultSet
rs
=
stmt
.
executeQuery
())
{
while
(
rs
.
next
())
{
int
id
=
rs
.
getInt
(
1
);
String
fileName
=
rs
.
getString
(
2
);
byte
[]
bytes
=
rs
.
getBytes
(
3
);
ImageIcon
img
=
new
ImageIcon
(
bytes
);
JOptionPane
.
showMessageDialog
(
null
,
img
,
"Zdjęcie nr "
+
id
,
JOptionPane
.
INFORMATION_MESSAGE
);
}
}
JOptionPane
.
showMessageDialog
(
null
,
"Gotowe"
);
}
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