当前位置:网站首页>JDBC programming of MySQL database
JDBC programming of MySQL database
2022-07-06 23:16:00 【No smell of flowers】
️ In front of the word ️
This article will introduce JDBC Programming ,JDBC(Java DataBase Connectivity,java Database connection ) It's one for execution SQL Of the statement Java API, It can provide unified access for a variety of relational databases , It's used by a group Java Language written classes and interfaces .
Blog home page : The blog home page without flowers
Welcome to focus on the likes collection ️ Leaving a message.
This paper is written by No smell of flowers original ,CSDN First episode !
Starting time :2022 year 7 month 4 Japan
️ Persistence and hard work will surely bring poetry and distance !
Recommended books :《 High performance MySQL》
Refer to the online programming website : Cattle from Power button
Blogger's code cloud gitee, Usually the program code written by bloggers is inside .
Blogger's github, Usually the program code written by bloggers is inside .
The author's level is very limited , If an error is found , Be sure to inform the author in time ! Thank you thank you !
Navigation assistant

1.JDBC Front work
1.1 Get ready MySQL Drive pack
MySQL Of jdbc We can download the driver package on the official website , We can maven Central warehouse download , This maven What is the central warehouse ? You can understand it as “ The app store ” Software , Its function is similar to that of the app store , It's just that there are mobile apps in the mobile app store , and maven There are many in the central warehouse API And dependency packages .
Now? MySQL Has been Oracle Acquired ,Oracle Of “ table manners ” It's a little ugly , You can find it on the official website , But I feel maven The central warehouse is better , So we arrived maven Central warehouse download jdbc Drive pack .
website :maven The central warehouse
First step , Click the website to enter maven The central warehouse .
The second step , Search for MySQL, Choose the one shown below .
The third step , Click to enter , Find the corresponding large version jdbc Drive pack , If your MySQL yes 5 Version of the driver package also choose 5 Version of , Of course if your MySQL yes 8 edition , Then choose your driver package 8 edition .
my MySQL yes 5 So I choose the larger version as 5 Driver package .
Step four , Click in , Follow the diagram below , Download the driver package .
After downloading, our driver package is ready .
1.2 Create project
Use the compiler to create a project , After the project is created , Follow the steps below :
First step , Create a directory , Name at will , It might as well be called lib Catalog .
The second step , Copy the downloaded driver package to this directory .
The third step , set an option , Right click the directory that you just created and copied the driver package , find As a Lib…

In this way, our driver package will be imported into our project , Then we can write jdbc Code. .
2.JDBC Programming steps
2.1 create data source DataSource
First step , establish DataSource object , To describe where the database is .
DataSource dataSource = new MysqlDataSource();
among DataSource by java.sql One of the inside jdbc Interface ,MysqlDataSource It comes from an implementation in the driver package we downloaded DataSource The class of the interface .
The second step , Set the “ Location ”(URL), Login database account name and password .
// Set the address of the database
((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/jdbctest/characterEncoding=utf8&useSSL=false");
// Set the account name for logging into the database
((MysqlDataSource)dataSource).setUser("root");
// Set the password to log in to the database
((MysqlDataSource)dataSource).setPassword("123456");
jdbc:mysql://127.0.0.1:3306/jdbctest?characterEncoding=utf8&useSSL=false It's just one. URL, Also called unique resource locator .jdbc:mysql It means that we should url Is used for jdbc mysql Of URL, Because there are many databases , More than jdbc A kind of , So it needs to be subdivided .
Specific meaning independent comparison :URL Type declaration :// The address of the database / Database name ? Character set encoding & Is it encrypted .
2.2 Connect to database
The third step , Establish a connection with the server , Create a data source DataSource After the object , Calling the getConnection() Method , obtain java.sql.Connection object , This will establish a connection with the database .
Connection connection = dataSource.getConnection();
2.3 Construct and execute sql sentence ( Insert operation as an example )
Step four , structure sql Statement string , And wrap the statement as PreparedStatement object , That is to call Connection Object's prepareStatement Method , Parameter is sql character string , Will return a PreparedStatement object , Then we call PreparedStatement Object executeUpdate Method or executeQuery Method execution sql sentence .
Let's take the insertion operation as an example .
// Operating the database The key is to construct sql sentence
//jdbc Tectonic sql Statements do not need to be accompanied by ;
String sql = "insert into student values(1, ' Zhang San ')";
// take sql String wrapped into a statement object , Indicates to be executed sql The object of
PreparedStatement statement = connection.prepareStatement(sql);
// perform sql
// If it is to be implemented sql Statement operation is insert, update, delete, Then use executeUpdate Method execution , The return value is the number of rows that affect the data
// If it is to be implemented sql Statement operation is select, Then use executeQuery Method execution
int ret = statement.executeUpdate();
among , If it is to be implemented sql Statement operation is insert, update, delete, Then use executeUpdate Method execution , The return value is the number of rows that affect the data , If it is to be implemented sql Statement operation is select, Then use executeQuery Method execution , The return value is one ResultSet Result table object .
2.4 Release resources in time
Step five , Release resources , We are finished sql You need to release resources in time after the statement , stay JDBC Programming , The most common classes or interfaces that need to be released are three , Namely Connection,PreparedStatement,ResultSet, The first two of them are jdbc It has been used in the insert operation , And the last one , namely ResultSet, It is used when executing query statements , call executeQuery Method after executing the query statement , Will return a “ A temporary table ”, The “ A temporary table ” The results of the query are stored on , We can get the result of querying the database by traversing the result table .
// here sql The statement has been executed , Need to release resources
statement.close();
connection.close();
Use jdbc Program to insert all the code :
import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Scanner;
public class TestJdbc {
public static void main(String[] args) throws SQLException {
DataSource dataSource = new MysqlDataSource();
// Set the address of the database
((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/jdbctest?characterEncoding=utf8&useSSL=false");
// Set the account name for logging into the database
((MysqlDataSource)dataSource).setUser("root");
// Set the password to log in to the database
((MysqlDataSource)dataSource).setPassword("123456");
// Establishing a connection
Connection connection = dataSource.getConnection();
// Operating the database The key is to construct sql sentence
//jdbc Tectonic sql Statements do not need to be accompanied by ;
String sql = "insert into student values(1, ' Zhang San ')";
// take sql String wrapped into a statement object , Indicates to be executed sql The object of
PreparedStatement statement = connection.prepareStatement(sql);
// perform sql
// If it is to be implemented sql Statement operation is insert, update, delete, Then use executeUpdate Method execution , The return value is the number of rows that affect the data
// If it is to be implemented sql Statement operation is select, Then use executeQuery Method execution
int ret = statement.executeUpdate();
// here sql The statement has been executed , Need to release resources
statement.close();
connection.close();
}
}
Running results , We observe by querying the results of the tables in the database :
mysql> create database jdbctest;
Query OK, 1 row affected (0.01 sec)
mysql> use jdbctest;
Database changed
mysql> create table student(id int, name varchar(20));
Query OK, 0 rows affected (0.02 sec)
mysql> show tables;
+--------------------+
| Tables_in_jdbctest |
+--------------------+
| student |
+--------------------+
1 row in set (0.00 sec)
-- perform jdbc Query after code
mysql> select * from student;
+------+--------+
| id | name |
+------+--------+
| 1 | Zhang San |
+------+--------+
1 row in set (0.00 sec)
Program run results , Express 1 The line has been affected .
2.5 Don't write dead code ( Take insertion, for example )
We found our sql The sentence is completely written , This is not good , We can use the input operation to let users input information for insertion , Then we need to use Scanner The class .
After we get the information entered by the user , We need to integrate information , The easiest way to think of is string splicing , But it has the following disadvantages , First, it is easy to make mistakes , Especially when there are many single and double quotation marks , Second, it's not safe , Hackers can use sql Injection to modify the database .
So a better way is to sql The information to be input in the string uses ? Instead of or called space occupying , And then through PreparedStatement Medium setXXX A series of methods to set each ? What is the content of .
This series of methods , First parameter representation sql How many objects to be executed ?, The second parameter indicates that this ? What to set up . such as :
// Operating the database The key is to construct sql sentence
//jdbc Tectonic sql Statements do not need to be accompanied by ;
String sql = "insert into student values(?, ?)";
// take sql String wrapped into a statement object , Indicates to be executed sql The object of
PreparedStatement statement = connection.prepareStatement(sql);
statement.setInt(1, id);
statement.setString(2, name);
Complete code :jdbc Insert operation source code
Running results :
Database query results :
mysql> select * from student;
+------+--------+
| id | name |
+------+--------+
| 1 | Zhang San |
| 2 | Li Si |
+------+--------+
2 rows in set (0.00 sec)
2.6JDBC Delete , update operation
stay jdbc Programming , Delete operation and update operation , Its steps are exactly the same as the insertion operation , It's just constructed sql Statements are different , Everything else is the same .
Delete operation key code :
// User input
System.out.println(" Please enter the student number to be deleted :");
int id = sc.nextInt();
// Operating the database The key is to construct sql sentence
//jdbc Tectonic sql Statements do not need to be accompanied by ;
String sql = "delete from student where id = ?";
PreparedStatement statement = connection.prepareStatement(sql);
statement.setInt(1, id);
System.out.println("statement" + statement);
jdbc Delete operation complete code : Source code address
Program run results :
Database query results :
mysql> select * from student;
+------+--------+
| id | name |
+------+--------+
| 1 | Zhang San |
+------+--------+
1 row in set (0.00 sec)
Update operation key code :
// User input What needs to be revised id And the modified name
System.out.println(" Please enter the student number to be modified :");
int id = sc.nextInt();
sc.nextLine();
System.out.println(" Please enter the modified name :");
String afterName = sc.nextLine();
// Operating the database The key is to construct sql sentence
//jdbc Tectonic sql Statements do not need to be accompanied by ;
String sql = "update student set name = ? where id = ?";
PreparedStatement statement = connection.prepareStatement(sql);
statement.setString(1, afterName);
statement.setInt(2, id);
System.out.println("statement" + statement);
jdbc Update operation complete code : Source code address
Program run results :

Database query results :
mysql> select * from student;
+------+--------+
| id | name |
+------+--------+
| 1 | Wang Wu |
+------+--------+
1 row in set (0.00 sec)
2.7JDBC Query operation
jdbc The query operation of is a little different from the insert, delete and update operation , Execute the query sql Statement is called executeQuery Method to execute the statement , And it will bring back the query results , We can obtain the results of the query through operations similar to iterators , After using this result set, you need to release it .
Key code :
// Operating the database The key is to construct sql sentence
//jdbc Tectonic sql Statements do not need to be accompanied by ;
String sql = "select * from student";
PreparedStatement statement = connection.prepareStatement(sql);
// perform sql The query operation does not return int It's a temporary table Use ResultSet Object represents this temporary table
ResultSet ret = statement.executeQuery();
// Convenient result set
// Expected result format
// +------+--------+
// | id | name |
// +------+--------+
// | 1 | Wang Wu |
// +------+--------+
while (ret.next()) {
int id = ret.getInt("id");
String name = ret.getString("name");
System.out.println("id:" + id + ", name:" + name);
}
// close resource
ret.close();
statement.close();
connection.close();
jdbc Query operation complete code : Source code address
Program run results :
Okay ,JDBC The whole content of is almost these , All complete code links : Address .
Next up : Database transactions

边栏推荐
- Flutter life cycle
- European Bioinformatics Institute 2021 highlights report released: nearly 1million proteins have been predicted by alphafold
- 不要再说微服务可以解决一切问题了
- 请问async i/o可以由udf算子实现然后用sql api调用吗?目前好像只看到Datastre
- Cloud native (32) | kubernetes introduction to platform storage system
- Why are some people still poor and living at the bottom of society even though they have been working hard?
- Case recommendation: An Qing works with partners to ensure that the "smart court" is more efficient
- Modules that can be used by both the electron main process and the rendering process
- AcWing 4299. Delete point
- CSDN 上传图片取消自动加水印的方法
猜你喜欢

DR-Net: dual-rotation network with feature map enhancement for medical image segmentation
Dockermysql modifies the root account password and grants permissions

Dayu200 experience officer homepage AITO video & Canvas drawing dashboard (ETS)

Pdf batch splitting, merging, bookmark extraction, bookmark writing gadget

What can be done for traffic safety?

Motion capture for snake motion analysis and snake robot development

儿童睡衣(澳大利亚)AS/NZS 1249:2014办理流程

Cloud native technology container knowledge points

欧洲生物信息研究所2021亮点报告发布:采用AlphaFold已预测出近1百万个蛋白质

Isomorphism + cross end, knowing applet +kbone+finclip is enough!
随机推荐
Graphite document: four countermeasures to solve the problem of enterprise document information security
欧洲生物信息研究所2021亮点报告发布:采用AlphaFold已预测出近1百万个蛋白质
mysql-cdc 的jar包 ,在flink运行模式下,是不是要放在不同的地方呢?
Cocoscreator+typescripts write an object pool by themselves
None of the strongest kings in the monitoring industry!
Isomorphism + cross end, knowing applet +kbone+finclip is enough!
DockerMySQL无法被宿主机访问的问题解决
[unity] upgraded version · Excel data analysis, automatically create corresponding C classes, automatically create scriptableobject generation classes, and automatically serialize asset files
asp读取oracle数据库问题
Dockermysql modifies the root account password and grants permissions
Les entreprises ne veulent pas remplacer un système vieux de dix ans
Coscon'22 community convening order is coming! Open the world, invite all communities to embrace open source and open a new world~
ICLR 2022 | pre training language model based on anti self attention mechanism
Dayu200 experience officer homepage AITO video & Canvas drawing dashboard (ETS)
自动更新Selenium驱动chromedriver
Motion capture for snake motion analysis and snake robot development
js导入excel&导出excel
Let's see through the network i/o model from beginning to end
mysql查看表结构的三种方法总结
基于PaddlePaddle平台(EasyDL)设计的人脸识别课堂考勤系统