当前位置:网站首页>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
边栏推荐
- 儿童睡衣(澳大利亚)AS/NZS 1249:2014办理流程
- docker中mysql开启日志的实现步骤
- 【Unity】升级版·Excel数据解析,自动创建对应C#类,自动创建ScriptableObject生成类,自动序列化Asset文件
- js导入excel&导出excel
- DockerMySQL无法被宿主机访问的问题解决
- View
- 华为云GaussDB(for Redis)揭秘第21期:使用高斯Redis实现二级索引
- 为了交通安全,可以做些什么?
- Unified Focal loss: Generalising Dice and cross entropy-based losses to handle class imbalanced medi
- What does security capability mean? What are the protection capabilities of different levels of ISO?
猜你喜欢
B站大佬用我的世界搞出卷積神經網絡,LeCun轉發!爆肝6個月,播放破百萬
Efficient ETL Testing
借助这个宝藏神器,我成为全栈了
DockerMySQL无法被宿主机访问的问题解决
今日睡眠质量记录78分
欧洲生物信息研究所2021亮点报告发布:采用AlphaFold已预测出近1百万个蛋白质
DR-Net: dual-rotation network with feature map enhancement for medical image segmentation
让我们,从头到尾,通透网络I/O模型
Hard core observation 545 50 years ago, Apollo 15 made a feather landing experiment on the moon
#DAYU200体验官# 在DAYU200运行基于ArkUI-eTS的智能晾晒系统页面
随机推荐
How to achieve text animation effect
Demonstration of the development case of DAPP system for money deposit and interest bearing financial management
Precise drag and drop within a contentable
Unified Focal loss: Generalising Dice and cross entropy-based losses to handle class imbalanced medi
flinksql select id ,count(*) from a group by id .
[unity] upgraded version · Excel data analysis, automatically create corresponding C classes, automatically create scriptableobject generation classes, and automatically serialize asset files
Unified Focal loss: Generalising Dice and cross entropy-based losses to handle class imbalanced medi
js导入excel&导出excel
Devsecops software R & D security practice - release
MySQL connected vscode successfully, but this error is reported
Flutter life cycle
欧洲生物信息研究所2021亮点报告发布:采用AlphaFold已预测出近1百万个蛋白质
koa2对Json数组增删改查
让我们,从头到尾,通透网络I/O模型
Koa2 addition, deletion, modification and query of JSON array
Method of canceling automatic watermarking of uploaded pictures by CSDN
Custom swap function
ACL 2022 | 序列标注的小样本NER:融合标签语义的双塔BERT模型
AcWing 4300. Two operations (minimum number of BFS searches)
AcWing 4299. Delete point