8 Database TableView
8 Database TableView
PROGRAMMING
JDBC
MUSBAH J. MOUSA
IYAS A. I. ESHAIKHKHALIL
1
OUTLINES
• Introduction
• JDBC
• The Architecture of JDBC
• The JDBC Interfaces
• Developing JDBC Programs
• Processing Statements
• The execute, executeQuery, and executeUpdate Methods
• The Prepared Statement
• TableView
2
INTRODUCTION
• JavaFX empowers us to create visually appealing user
interfaces, but the heart of many applications lies in data
manipulation.
• To achieve this, we integrate Java applications with
databases.
• In this lecture, we'll explore the seamless integration of
Java applications with databases, leveraging the power of
JDBC.
• With JDBC, we connect, interact, and manipulate data
effectively.
3
JDBC
• The Java Database Connectivity (JDBC) API provides
universal data access from the Java programming
language. Using the JDBC API, you can access virtually
any data source, from relational databases to
spreadsheets and flat files.
4
THE ARCHITECTURE OF JDBC
5
THE ARCHITECTURE OF JDBC
• JDBC API: It provides various methods and interfaces for easy
communication with the database.
• Examples: Drivers, DriverManager, Statement,
Connection, CallableStatement, PreparedStatement,
ResultSet, SQL data.
• DriverManager: It loads a database-specific driver in an
application to establish a connection with a database.
• JDBC drivers: To interact with a data source with the help of
the JDBC, one needs a JDBC driver which conveniently
interacts with the respective data source.
6
THE JDBC INTERFACES
Loading
drivers
Establishing
connections
Creating and
executing
statements
Processing
ResultSet
7
DEVELOPING JDBC
PROGRAMS
• The Statement to load a driver:
Loading drivers
Class.forName("JDBCDriverClass");
Establishing
connections
Creating and • A driver is a class.
executing • For example:
statements
Processing Database Driver Class Source
ResultSet
Access sun.jdbc.odbc.JdbcOdbcDriver Already in
JDK
MySQL com.mysql.jdbc.Driver Website
Oracle oracle.jdbc.driver.OracleDriver Website
8
DEVELOPING JDBC
PROGRAMS
• The statement to establishing connections:
Loading drivers
Connection connection = DriverManager.getConnection(databaseURL);
9
DEVELOPING JDBC
PROGRAMS
Loading drivers • Creating statement:
10
DEVELOPING JDBC
PROGRAMS
Executing statement (for select):
Loading drivers
// Select the columns from the Student table
ResultSet resultSet = stmt.executeQuery("select firstName, mi, lastName
Establishing from Student where lastName = 'Smith'");
connections
Creating and
executing Processing ResultSet (for select):
statements // Iterate through the result and print the student names
Processing while (resultSet.next())
ResultSet System.out.println(resultSet.getString(1) + " " + resultSet.getString(2)
+ ". " + resultSet.getString(3));
11
FULL EXAMPLE
SimpleJdbc
import java.sql.*;
public class SimpleJdbc {
public static void main(String[] args)
throws SQLException, ClassNotFoundException {
// Load the JDBC driver
Class.forName("com.mysql.jdbc.Driver");
System.out.println("Driver loaded");
// Establish a connection
Connection connection = DriverManager.getConnection
("jdbc:mysql://localhost/test");
System.out.println("Database connected");
12
FULL EXAMPLE (CONT.)
SimpleJdbc
// Create a statement
Statement statement = connection.createStatement();
// Execute a statement
ResultSet resultSet = statement.executeQuery
("select firstName, mi, lastName from Student where lastName "
+ " = 'Smith'");
13
FULL EXAMPLE (CONT.)
SimpleJdbc
// Iterate through the result and print the student names
while (resultSet.next())
System.out.println(resultSet.getString(1) + "\t" +
resultSet.getString(2) + "\t" + resultSet.getString(3));
14
PROCESSING STATEMENTS
• Once a connection to a particular database is established, it
can be used to send SQL statements from your program to the
database.
• JDBC provides the Statement, PreparedStatement, and
CallableStatement interfaces to facilitate sending statements
to a database for execution and receiving execution results
from the database.
15
The execute, executeQuery,
and executeUpdate Methods
• The methods for executing SQL statements are execute,
executeQuery, and executeUpdate.
• Each of which accepts a string containing a SQL statement as
an argument.
• This string is passed to the database for execution.
16
The execute, executeQuery,
and executeUpdate Methods
• The execute method should be used if the execution produces
multiple result sets, multiple update counts, or a combination of
result sets and update counts.
• The executeQuery method should be used if the execution
produces a single result set, such as the SQL select statement.
• The executeUpdate method should be used if the statement
results in a single update count or no update count, such as a
SQL INSERT, DELETE, UPDATE, or DDL statement.
17
PreparedStatement
• The PreparedStatement interface is designed to execute
dynamic SQL statements and SQL-stored procedures with IN
parameters.
• These SQL statements and stored procedures are precompiled
for efficient use when repeatedly executed.
• Example:
Statement pstmt = connection.prepareStatement("insert into Student
(firstName, mi, lastName) + values (?, ?, ?)");
pstmt.setString(1, "Iyas");
pstmt.setString(2, "A.");
pstmt.setString(3, "Khalil");
IN Parameters
18
Table View
19
TableView
You can display tables using the TableView class.
20
TableView
• The JavaFX TableView class uses a set of related classes to
do its job.
• These classes are:
• TableColumn
• TableRow
• TableCell
• TablePosition
• TableViewFocusModel
• TableViewSelectionModel
21
The TableView Class
javafx.scene.control.Control The getter and setter methods for property values and
a getter for property itself are provided in the class, but
omitted in the UML diagram for brevity.
javafx.scene.control.TableView<S>
22
TableColumn
• To create a TableView you need to add one or more
TableColumn instances to the TableView instance.
• A TableColumn represents a vertical column of values.
23
The TableColumn Class
java.lang.Object The getter and setter methods for property values and
a getter for property itself are provided in the class, but
omitted in the UML diagram for brevity.
javafx.scene.control.TableColumn<S, T>
CellDataFeatures<S,T>,ObservableValue
<T>>>
-graphic: ObjectProperty<Node> The graphic for this TableColumn.
-id: StringProperty The id for this TableColumn.
-resizable: BooleanProperty Indicates whether the column is resizable.
-sortable: BooleanProperty Indicates whether the column is sortable.
-text: StringProperty Text in the table column header.
-style: StringProperty Specify the CSS style for the column.
-visible: BooleanProperty Specify whether the column is visible (default: true).
+TableColumn() Creates a default TableColumn.
+TableColumn(text: String) Creates a TableView with the specified header text.
24
TableColumn Cell Value
Factory
• A TableColumn must have a cell value factory set on it.
• The cell value factory extracts the value to be displayed in each
cell (on each row) in the column.
• You can use PropertyValueFactory to extract the values from
your data class.
• You can use MapValueFactory to extract the values from a
Map.
25
TableView Example
Data Class
public class Student{
private StringProperty name;
private IntegerProperty Id;
private ObjectProperty<Date> dateOfBirth;
// constructor
26
TableView Example
Create TableView
// Create TableView
TableView<Student> tableView = new TableView<>();
27
TableView Example
Create Cell Factories
// Create Cell Factories
PropertyValueFactory nameFactory = new PropertyValueFactory<Student, String>("name");
PropertyValueFactory idFactory = new PropertyValueFactory< Student, Integer>("id");
Note:
• The property name “name” will match the getter method
getName() of the Student objects which contain the values are
displayed on each row.
• And the property type “String” will match the getter method
return type.
28
TableView Example
Create Cell Factories
// Create Cell Factories
PropertyValueFactory nameFactory = new PropertyValueFactory<Student, String>("name");
PropertyValueFactory idFactory = new PropertyValueFactory<Student, Integer>("id");
29
TableView Example
Create Columns
// Create TableColumns
TableColumn nameColumn = new TableColumn("Name");
nameColumn.setMinWidth(100);
nameColumn.setCellValueFactory(nameFactory);
30
TableView Example
Final steps
// Add the columns to the TableView
tableView.getColumns().addAll(nameColumn, idColumn);
31
ANY QUESTIONS?
32