Java JDBC Tutorial or What is Java Database Connectivity(JDBC) with examples on Driver, DriverManager, Connection, Statement, ResultSet. JDBC Driver is a software component that enables java application to interact with the database. The JDBC-ODBC bridge driver uses ODBC driver to connect to the database. Oracle recommends that you use JDBC drivers provided by the vendor of your database instead of the JDBC-ODBC. JDBC API is a Java API that can access any kind of tabular data, especially data This tutorial is designed for Java programmers who would like to understand.
|Language:||English, Portuguese, French|
|ePub File Size:||24.57 MB|
|PDF File Size:||13.74 MB|
|Distribution:||Free* [*Registration needed]|
10g Release 2 (). B March This book describes how to use the Oracle JDBC drivers to develop powerful Java database applications. Chapter 1—JDBC: Databases The Java Way! . called Application Programming Interfaces (APIs), is the Java Database Connectivity. In this post, we feature a comprehensive JDBC Tutorial (Java Database Connectivity), an API provided by Oracle that allows programmers to.
Next, we are going to create a new database user and a new database. We use the mysql client. If not, we need to start the server. On Ubuntu Linux, this can be done with the sudo service mysql start command.
All rights reserved. Other names may be trademarks of their respective owners. We connect to the database using the root account.
We will use this database throughout the tutorial. We grant all privileges to this user for all tables of the testdb database.
Maven file We use the following Maven file: pom. We also include the exec-maven-plugin for executing Java programs from Maven.
We check the version of the MySQL server. Connection; import java. DriverManager; import java. ResultSet; import java. SQLException; import java.
Statement; import java. Level; import java. Each driver has a different syntax for the URL. In our case, we provide a host, a port, and a database name. The connection is established with the getConnection method.
The createStatement method of the connection object creates a Statement object for sending SQL statements to the database. The executeQuery method of the connection object executes the given SQL statement, which returns a single ResultSet object.
The try-with-resources syntax ensures that the resources are cleaned up in the end. Initially the cursor is positioned before the first row. The next method moves the cursor to the next row.
If there are no rows left, the method returns false. The getString method retrieves the value of a specified column. The first column has index 1. For this console example, the message is displayed in the terminal. The Manen's -q option runs Maven in quiet mode; i. Creating and populating tables Next we are going to create database tables and fill them with data.
These tables will be used throughout this tutorial. The tables are of InnoDB type.
InnoDB databases support foreign key constraints and transactions. We place a foreign key constraint on the AuthorId column of the Books table. We fill the Authors and Books tables with initial data.
Java JDBC Tutorial
We use the source command to execute the tables. When we write prepared statements, we use placeholders instead of directly writing the values into the statements. Prepared statements increase security and performance. PreparedStatement; import java. Prepared statements are faster and guard against SQL injection attacks.
We use the executeUpdate method of the statement object when we don't expect any data to be returned. We will execute a normal statement and a prepared statement times. We check if there is some difference in execution time. We saved 20 seconds. We get all data from the Authors table. We use the executeQuery method. It returns false when there are no more rows in the result set.
The getInt and getString methods retrieve the value of the designated column in the current row of this ResultSet object as an int and String of the Java programming language. Properties It is a common practice to put the configuration data outside the program in a separate file. This way the programmers are more flexible. We can change the user, a password or a connection url without needing to recompile the program. It is especially useful in a dynamic environment, where is a need for a lot of testing, debugging, securing data etc.
In Java, the Properties is a class used often for this. These are dynamically loaded during the execution of the program.
FileInputStream; import java. IOException; import java. Properties; import java. This time, we load the connection properties from a file. They are not hard coded in the proram. The data is loaded from the file called db.
The usage of a data source improves application's performance and scalability. Using a datasource has several advantages over the DriverManager: increased portability, connection pooling, and distributed transactions. The MysqlDataSource is a class for creating datasources. Driver mysql. MysqlDataSource; import java. The statements are separated by a semicolon. The method returns a boolean value indicating if the first result is a ResultSet object. Subsequent results are called using the getMoreResults method.
The ResultSet is retrieved with the getResultSet method call. To find out if there are other results, we call the getMoreResults method. One cause of this is lack of importing "javax. AbstractTableModel" class. This error is fixed by right-clicking somewhere of the code and select "Fix Imports".
Use "Fix imports" tool You can check the declaration import javax. AbstractTableModel; has been inserted near the top of the source code. But still the red underline remains. The remaining cause of this is lack of implementation of proper abstract methods. This is fixed by "overriding method" tool invoked this way Required implementations are listed Select all of the three methods by clicking the node and "OK". Required implementations are inserted automatically Now the red line is gone!
In fact, we also need to override getColumnName int param method, otherwise we couldn't get customized headders of the table. Let's fill the contents. The code is specified to access the specific table "cars", so the number of column is fixed to 4. Each column's name is also known and can be set directly. It worked successfully in NB Clap hands! The name is "InsertTable" in my case, which created a source file "InsertTable.
First, design the form. It should be take a vertically long window, so I fixed the form size instead of use "packing". Select "JFrame" node in the Inspector window to show its properties. To fix the Form size.
Then "Form Size" property becomes editable. Edit it as: The Form size edited.
This form will be separated vertically into three parts: 1 JTextfields orJComboBox to input the new data. This is the basic parts. JPanels and JScrollPane to locate the components.
Notice the vertical positions of the nodes don't mean their actual locations. I decided GridLayout is the best to set these locations. Set colunm number to 2, row number to 4. Then locate the components. The component might escape to a very wrong position, as a different panel. Don't worry, you can move its location by drag and drop within the Inspector window, too. Moving the JComboBox within the Inspector window. After all components are set, customize their name to show their roles.
Also GridLayout is set for this JPanel, with 1 column and two rows. The name and "text" property are customized. In this way the components, other than JTable, arearranged as below: Components without JTable has been customized. Let's customize it to show the content of the table "cars" of MySQL database. Select the JTable now is named "carTable" in the Inspector window to show its properties. Find the "model" property and click the " The default 4x4 structure is set in this window.
Form Connection mode Then look at the bottom of this window. The "Advanced" button is there.
Click it! This time check both to edit. Check the InitComponents method. Light-blue "Protected""Uneditable" area? Who said so?
You can edit frrreely by this means prepared by NetBeans! First running of InsertTable To make a first test run of this customized JTable, we still have something to do. First, declaration. Statement stmt; They are to be written somewhere in the source. Near the EOF, close to other variables, would be nice.
Then the constructor. Note that we should add throw declaration to it to avoid that annoying compile error "java. SQLException is not reported Edit the main method prepared by NetBeans: Add try-catch to the main method Now let's run the project!
An window to select main class might be appear. In the list you will find only this "InsertTable. Select it.
Taking a little care One thing is a proper termination of this application, All the sessions with MySQL connection, statement, resultsets must be closed.
This application is terminated by closing the window. So we should add an event processing method for WindowClosing event. Select "JFrame" in the Inspector window to show its properties window, and then click "events" to switch the page. Find "windowClosing" event. Setting windowClosing event of JFrame Then the source code appears to enable to edit the method. Edit "formWindowClosing" method Close the statement and the connection.
The other thing is to set items of the JComboBox named typeCombo. Yes, it should be equipped to select drive type of a car. Select "typeCombo" node in the Inspector Window to show its properties.UcanloadDriver" instead of the original one net. InnoDB databases support foreign key constraints and transactions. These drivers don't translate the requests into an intermediary format such as ODBC. There is no Titl column in the table. What is inheritance in Java?