MySQL五步走JDBC編程全解讀
一、數(shù)據(jù)庫編程的必備條件
編程語言,如Java,C、C++、Python等 數(shù)據(jù)庫,如Oracle,MySQL,SQL Server等 數(shù)據(jù)庫驅動包:不同的數(shù)據(jù)庫,對應不同的編程語言提供了不同的數(shù)據(jù)庫驅動包,如:MySQL提 供了Java的驅動包mysql-connector-java,需要基于Java操作MySQL即需要該驅動包。同樣的, 要基于Java操作Oracle數(shù)據(jù)庫則需要Oracle的數(shù)據(jù)庫驅動包ojdbc。
二、Java的數(shù)據(jù)庫編程:JDBC
JDBC,即Java Database Connectivity,java數(shù)據(jù)庫連接。是一種用于執(zhí)行SQL語句的Java API,它是 Java中的數(shù)據(jù)庫連接規(guī)范。這個API由 java.sql.*,javax.sql.* 包中的一些類和接口組成,它為Java 開發(fā)人員操作數(shù)據(jù)庫提供了一個標準的API,可以為多種關系數(shù)據(jù)庫提供統(tǒng)一訪問。
三、JDBC工作原理
DBC 為多種關系數(shù)據(jù)庫提供了統(tǒng)一訪問方式,作為特定廠商數(shù)據(jù)庫訪問API的一種高級抽象,它主要包 含一些通用的接口類。
JDBC訪問數(shù)據(jù)庫層次結構:

四、開發(fā)環(huán)境搭建
首先在電腦服務當中查看自己MySQL的版本,然后進入maven倉庫


因為我自己的版本是5.0之后的,所以我選擇5.1.47,大版本要一致

下載jar即可,記住,jar包不能解壓縮

接下來就在idea自己在根目錄下創(chuàng)建文件夾,然后導入jar包




沒有報錯一直O(jiān)K下去就沒有啥問題,說明導入成功
五、MySQL中的JDBC編程
1、五步流程
建立數(shù)據(jù)庫連接
// 加載JDBC驅動程序:反射,這樣調用初始化com.mysql.jdbc.Driver類,即將該類加載到JVM方法
區(qū),并執(zhí)行該類的靜態(tài)方法塊、靜態(tài)屬性。
Class.forName("com.mysql.jdbc.Driver");
// 創(chuàng)建數(shù)據(jù)庫連接
Connection connection =
DriverManager.getConnection("jdbc:mysql://localhost:3306/test?
user=root&password=root&useUnicode=true&characterEncoding=UTF-8");//MySQL數(shù)據(jù)連接的URL參數(shù)格式如下: jdbc:mysql://服務器地址:端口/數(shù)據(jù)庫名?參數(shù)名=參數(shù)值
創(chuàng)建操作命令(Statement)
Statement statement = connection.createStatement();
執(zhí)行SQL語句
ResultSet resultSet= statement.executeQuery(
"select id, sn, name, qq_mail, classes_id from student");處理結果集
while (resultSet.next()) {
int id = resultSet.getInt("id");
String sn = resultSet.getString("sn");
String name = resultSet.getString("name");
int classesId = resultSet.getInt("classes_id");
System.out.println(String.format("Student: id=%d, sn=%s, name=%s,
classesId=%s", id, sn, name, classesId));
}釋放資源(關閉結果集,命令,連接)
//關閉結果集
if (resultSet != null) {
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();
}
}2、添加信息
首先創(chuàng)建一個數(shù)據(jù)庫并且創(chuàng)建一個表
create database java122;
create table text(id int,name varchar(5),class_id int);
import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class TextJDBC {
//DataSource
//Connection
//PrepareStatement
public static void main(String[] args) throws SQLException{
//1、創(chuàng)建DataSource對象
DataSource dataSource = new MysqlDataSource();
//設置相關內(nèi)容
//URL User password
//向下轉型 訪問數(shù)據(jù)庫 協(xié)議名 ip地址 要訪問那個地址
((MysqlDataSource) dataSource).setURL("jdbc:mysql://127.0.0.1:3306/java122?characterEncoding=utf-8&useSSL=false");
((MysqlDataSource) dataSource).setUser("root");
((MysqlDataSource) dataSource).setPassword("180210");
//2、和數(shù)據(jù)庫連接.進行后續(xù)連接
//connect生命周期較短
Connection connection = dataSource.getConnection();
//3、拼裝SQL語句
int id = 1;
String name = "曹操";
int class_id = 10;
//?是一個占位符,可以把一個具體的變量的值替換到?
String sql = "insert into text values(?,?,?)";
PreparedStatement statement = connection.prepareStatement(sql);
//1 2 3相當與?的下標
statement.setInt(1,id);
statement.setString(2,name);
statement.setInt(3,class_id);
System.out.println("statement:" + statement);
//4、執(zhí)行SQL語句
int ret = statement.executeUpdate();
System.out.println("ret:" + ret);
//5、關閉相關資源
//后創(chuàng)建的先釋放,順序不能錯
statement.close();
connection.close();
}
}
3、查詢信息
import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;
import javax.sql.DataSource;
import javax.xml.transform.Source;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Scanner;
public class Text1 {
public static void main(String[] args) throws SQLException {
//1,創(chuàng)建實列
DataSource dataSource = new MysqlDataSource();
((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/java122?characterEncoding=utf-8&useSSL=false");
((MysqlDataSource)dataSource).setUser("root");
((MysqlDataSource)dataSource).setPassword("180210");
//2,數(shù)據(jù)庫連接
Connection connection = dataSource.getConnection();
//3,構造SQL語句
String sql ="select * from text";
PreparedStatement statement = connection.prepareStatement(sql);
//4,執(zhí)行SQL語句
ResultSet resultSet = statement.executeQuery();
while (resultSet.next()){
int id = resultSet.getInt("id");
String name = resultSet.getString("name");
int class_id = resultSet.getInt("class_id");
System.out.println("id: " + id + "name: " + name + "class_id: " + class_id);
}
//5,關閉相關資源
resultSet.close();
statement.close();
connection.close();
}
}
4、刪除信息
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 Textur2 {
public static void main(String[] args) throws SQLException {
Scanner scanner = new Scanner(System.in);
System.out.println("請輸入要刪除學生的姓名:");
String name = scanner.next();
//1,創(chuàng)建實列
DataSource dataSource = new MysqlDataSource();
((MysqlDataSource) dataSource).setURL("jdbc:mysql://127.0.0.1:3306/java122?characterEncoding=utf-8&useSSL=false");
((MysqlDataSource) dataSource).setUser("root");
((MysqlDataSource) dataSource).setPassword("180210");
//2,數(shù)據(jù)庫連接
Connection connection = dataSource.getConnection();
//3,構造SQL語句
String sql = "delete from text where name = ?";
PreparedStatement statement = connection.prepareStatement(sql);
statement.setString(1,name);
//4,執(zhí)行SQL
int ret = statement.executeUpdate();
if (ret == 1){
System.out.println("刪除成功");
}else {
System.out.println("刪除失敗");
}
//5,關閉資源
statement.close();
connection.close();
}
}

5、修改信息
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 Text4 {
public static void main(String[] args) throws SQLException {
//修改信息
Scanner scanner = new Scanner(System.in);
System.out.println("請輸入學生的id:");
int id = scanner.nextInt();
System.out.println("請輸入修改學生姓名:");
String name = scanner.next();
//1,創(chuàng)建實列
DataSource dataSource = new MysqlDataSource();
((MysqlDataSource) dataSource).setURL("jdbc:mysql://127.0.0.1:3306/java122?characterEncoding=utf-8&useSSL=false");
((MysqlDataSource) dataSource).setUser("root");
((MysqlDataSource) dataSource).setPassword("180210");
//2,數(shù)據(jù)庫連接
Connection connection = dataSource.getConnection();
//3,拼裝SQL
String sql = "update text set name = ? where id = ?";
PreparedStatement statement = connection.prepareStatement(sql);
statement.setString(1,name);
statement.setInt(2,id);
//4,執(zhí)行SQL
int set = statement.executeUpdate();
if (set == 1){
System.out.println("修改成功");
}else {
System.out.println("修改失敗");
}
//5,關閉資源
statement.close();
connection.close();
}
}

到此這篇關于MySQL五步走JDBC編程全解讀的文章就介紹到這了,更多相關MySQL JDBC編程內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
3種高效的Tags標簽系統(tǒng)數(shù)據(jù)庫設計方案分享
這篇文章主要介紹了3種高效的Tags標簽系統(tǒng)數(shù)據(jù)庫設計方案分享,現(xiàn)在主流的博客、CMS系統(tǒng)都有一個標簽系統(tǒng),本文就探討它的數(shù)據(jù)庫設計方式,需要的朋友可以參考下2014-07-07
MySQL group by和left join并用解決方式
這篇文章主要介紹了MySQL group by和left join并用解決方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-12-12
golang實現(xiàn)mysql數(shù)據(jù)庫備份的操作方法
這篇文章主要介紹了golang實現(xiàn)mysql數(shù)據(jù)庫備份的操作方法,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2018-06-06

