即Java DataBase Connectivity,简称JDBC。它是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。
前端IDEA2018,后台MySql。
IDEA下载指导点击链接:https://blog.csdn.net/qq_42781223/article/details/93676239.
本文使用MySql创建数据库,并以此来完成对数据库的各项操作。
使用SQLyog在MySql新建数据库jdbc,新建jdbc表,字符集选用utf-8,核对选择utf-8-general-oi。设置如图:
一、使用IDEA创建工程目录
1.双击打开IDEA,选择Create New Project,如图:
二、jar包的导入
选择你的工程,右键选择NEW–Directory,新建lib目录,用于存放jar包。建好之后,选中lib目录,将已经下载好的jar包复制进去。
上图中左边的目录里有经过相同操作后建立的lib目录及放进去的jar包,注意lib目录和src属同级目录。
至此,准备工作完成,开始正式完成编程。
右键点击src-new-java class,输入类名Demo,完成。
import utill.DButill;
import java.sql.*;
public class Demo {
//JDBC JAVA DATABASE CONNECTION
public static void main(String[] args){
PreparedStatement statement = null;
ResultSet resultSet = null;
try{
//1.加载驱动
Class.forName("com.mysql.jdbc.Driver");
//2.创建连接
connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/jdbc?useSSL=true&characterEncoding=utf-8&user=root&password=000000");
//3.写sql
String sql="select * from jdbc";
//4.得到statement对象
statement = DButill.getConnection().prepareStatement(sql);
//5.执行sql 得到结果集
resultSet = statement.executeQuery();
//6.处理结果集
while(resultSet.next()){
System.out.println(resultSet.getInt(1));
System.out.println(resultSet.getString(2));
System.out.println(resultSet.getString(3));
}
//7.关闭连接
}catch(Exception e){
e.printStackTrace();
}finally {
try {
resultSet.close();
} catch (SQLException e) {
e.printStackTrace();
}
if (statement != null) {
try {
statement.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (connection != null) {
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
在本例中仅仅是查询操作,但是在JDBC中的增删改查里,有些操作是一样的,那如果每个操作都写一遍自然是可以的,但是效率受损而且代码重复率太高。就以加载驱动、创建连接和关闭连接操作来说,这部分代码是各个操作都用到的相同部分,因此可考虑将它们整理出来,以避免代码的冗杂和重复,同时提高结构化程度。
在url的设置里,“jdbc:mysql://127.0.0.1:3306/jdbc?useSSL=true&characterEncoding=utf-8&user=root&password=000000”
jdbc是我的数据库表名,user和password都是MySql安装时设置的口令,root为默认口令,设置时请牢记。
以此为出发点,新建DButill.java类,如下:
package utill;
import java.sql.*;
public class DButill {
public static Connection getConnection() {
Connection connection = null;
try {
Class.forName("com.mysql.jdbc.Driver");
connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/jdbc?useSSL=true&characterEncoding=utf-8&user=root&password=000000");
System.out.println("创建连接成功!");
return connection;
} catch (Exception e) {
e.printStackTrace();
}
//2.创建连接
System.out.println("创建连接失败!");
return null;
}
public static void ShutDown(PreparedStatement statement, Connection connection) {
if (statement != null) {
try {
statement.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (connection != null) {
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
其中的getConnection()方法用于与建立连接,ShutDown()方法用于关闭资源。
并且在其他类种调用该方法时,要注意使用DButill.getConnection(). 去代替connection,具体使用见代码。
则Demo.java类即可修改为:
import utill.DButill;
import java.sql.*;
public class Demo {
//JDBC JAVA DATABASE CONNECTION
public static void main(String[] args){
PreparedStatement statement = null;
ResultSet resultSet = null;
try{
//1.加载驱动 //2.创建连接
DButill.getConnection();
//3.写sql
String sql="select * from jdbc";
//4.得到statement对象
statement = DButill.getConnection().prepareStatement(sql);
//5.执行sql 得到结果集
resultSet = statement.executeQuery();
//6.处理结果集
while(resultSet.next()){
System.out.println(resultSet.getInt(1));
System.out.println(resultSet.getString(2));
System.out.println(resultSet.getString(3));
}
//7.关闭连接
}catch(Exception e){
e.printStackTrace();
}finally {
try {
resultSet.close();
} catch (SQLException e) {
e.printStackTrace();
}
DButill.ShutDown(statement,DButill.getConnection());
}
}
}
新建Insert.java
import utill.DButill;
import java.sql.Connection;
import java.sql.PreparedStatement;
public class Insert {
public static void main(String[] args){
Connection connection = null;
PreparedStatement statement = null;
//1.注册驱动
try {
DButill.getConnection();
//3.写sql
String sql="insert into jdbc (username,password) values(?,?)";
//4.获取statement对象
statement = DButill.getConnection().prepareStatement(sql);
statement.setString(1,"xiaohua");
statement.setString(2,"999");
statement.executeUpdate();
//5.执行sql.
//6.关闭连接
} catch (Exception e) {
e.printStackTrace();
}
finally {
DButill.ShutDown(statement,connection);
}
}
}
新建Update.java
import sun.security.pkcs11.Secmod;
import utill.DButill;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class Update {
public static void main(String[] args){
PreparedStatement statement = null;
ResultSet resultSet = null;
//1.注册驱动
//2.建立连接
DButill.getConnection();
//3.写sql语句
String sql="update jdbc set password='" + 100 + "' where id='" + 3 + "'";
//4.获取statement对象
try {
statement = DButill.getConnection().prepareStatement(sql);
//5.执行sql,得到结果集
//resultSet = statement.executeQuery();
//6.处理结果集
statement.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
//7.关闭statement、connection、resultSet资源
finally {
DButill.ShutDown(statement,DButill.getConnection());
}
}
}
新建Delete.java
import utill.DButill;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.util.concurrent.Callable;
public class Delete {
public static void main(String[] args){
PreparedStatement statement = null;
//1.注册驱动
try {
DButill.getConnection();
//3.写sql语句
String sql ="delete from jdbc where id='" + 5 + "'";
//4.获取statement对象
statement = DButill.getConnection().prepareStatement(sql);
//5.处理sql
//6.处理结果集
statement.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
}
//7.关闭connection、statement、resultSet等资源
finally {
DButill.ShutDown(statement,DButill.getConnection());
}
}
}
经测试,代码均能正确高效执行。由于这只是简单实现JDBC增删改查操作,并未对整体的交互性做考量,因此在运行时,记得选择要运行的java类。你要是运行着Insert.java,却希望看到数据库中某条信息被删除,那是做不到的哟。请注意,代码的有效性与软件的版本有很大关系,博主所用的版本并非最新版本,望诸位同道注意。
小白新博,望采纳点赞~如有修正意见,望在评论区留言告知,某不胜感激。