參考到博客:https://www.cnblogs.com/centor/p/6142775.html
工具:eclipse
MySQL5.6
MySQL連接驅動:mysql-connector-java-5.1.27.jar
鏈接:https://pan.baidu.com/s/18tUdoRDFN8hljPJgGDtLEg 提取碼:5krm
總感覺驅動會和版本有關係,但是在具體使用過程中沒有去對比,所以不太清楚具體的問題,那就遇到了在解決吧。
只是找了下相應的資料,就貼在下面了:
這個是我的mysql配置版本
那準備工作做好了,就開始我們的測試。
===========================================================================================
那我們就開始創建java工程了:
加載驅動:
1. 在工程目錄中創建lib文件夾,將下載好的JDBC放到該文件夾下,如下圖所示:
2. 右鍵工程名,在java build path中的Libraries分頁中選擇Add JARs...,選擇剛纔添加的JDBC,如下圖:
3.準備好自己的數據包
這裏就簡單的弄兩條數據了,主要是記錄下學習的內容
CREATE TABLE usertable(
empno INT(4) PRIMARY KEY,
ename VARCHAR(10),
job VARCHAR(9),
hiredate DATE,
sal FLOAT(7,2)
) ;
insert into usertable (empno,ename) values (1,'tan');
insert into usertable (empno,ename) values (2,'hu');
4.java操作mysql數據的簡單的代碼:
package javasql;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
@SuppressWarnings("unused")
public class javasql {
public static void main(String[] args) {
//聲明Connection對象
Connection con;
//驅動程序名
String driver = "com.mysql.jdbc.Driver";
//URL指向要訪問的數據庫名mydata
String url = "jdbc:mysql://localhost:3306/mytest";
//url的格式: 大協議:子協議://IP地址:端口號/庫名?參數=參數值
//MySQL配置時的用戶名
String user = "root";
//MySQL配置時的密碼
String password = "123456";
//遍歷查詢結果集
try {
//加載驅動程序
Class.forName(driver);/*Class.forName("");的作用是要求JVM查找並加載指定的類。
加載類,這裏會調用靜態方法DriverManager.registerDriver(new Driver());且只執行
一次*/
//1.getConnection()方法,連接MySQL數據庫!!
con = DriverManager.getConnection(url,user,password);
if(!con.isClosed())
System.out.println("Succeeded connecting to the Database!");
//2.創建statement類對象,用來執行SQL語句!!
Statement statement = con.createStatement();
//要執行的SQL語句
String sql = "select * from usertable";
//3.ResultSet類,用來存放獲取的結果集!!
ResultSet rs = statement.executeQuery(sql);
System.out.println("-----------------");
System.out.println("執行結果如下所示:");
System.out.println("-----------------");
System.out.println("序號" + "\t" + "姓名");
System.out.println("-----------------");
String job = null;
String id = null;
while(rs.next()){//rs爲一個查詢數據庫的結果集。next()就是判斷是否到了最後一條記錄
//獲取stuname這列數據
job = rs.getString("ename");//獲取對應該字段的記錄內容
//獲取stuid這列數據
id = rs.getString("empno");
//輸出結果
System.out.println(id + "\t" + job);
}
rs.close();
con.close();
} catch(ClassNotFoundException e) {
//數據庫驅動類異常處理
System.out.println("Sorry,can`t find the Driver!");
e.printStackTrace();
} catch(SQLException e) {
//數據庫連接失敗異常處理
e.printStackTrace();
}catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}finally{
System.out.println("數據庫數據獲取結束!!");
}
}
}
結果如下圖所示:
==================================================================================
上面初步對JAVA的jdbc的操作有了個大致的瞭解,那接下來,
1 先了解下JDBC中使用的幾個類對應的方法,主要爲下面的5種接口:
2 簡單的總結下,java操作mysql的增刪改查的操作:
-------------------
具體給個接口的方法的功能詳細請查看:https://blog.csdn.net/know9163/article/details/80574315
其中用到的類(主要由4個類構成),和對應的功能如圖所示:
下面只是做簡單的指出:
1 Connection接口
- Connection與特定數據庫的連接(會話),在連接上下文中執行SQL語句並返回結果。
- DriverManager的getConnection()方法建立在JDBC URL中定義的數據庫Connection連接上,主要的使用方法如下:
-Mysql
Connection con = DriverManager.getConnection("jdbc:mysql://host:port/database", "user", "password");
-Oracle
Connection con = DriverManager.getConnection("jdbc:oracle:thin@host:port/database", "user", "password");
2 Statement接口
- 用於執行靜態SQL語句並返回它所生成結果的對象。
- 三種Statement類:
- (1)Statement:
由createStatement創建,用於發送簡單的SQL語句(不帶參數)
- (2)PreparedStatement:
- 繼承自Statement接口,有preparedStatement創建,用於發送含有一個或者多個輸入參數的SQL語句。PreparedStatement對象
比Statement對象效率更高,並且是防止SQL注入。我們一般都使用PreparedStatement。
- (3)CallableStatement:
- 繼承自preparedStatement。由方法prePareCall創建,用於調用存儲過程。
- 常用的Statement方法
- execute():運行語句,返回是否有結果集。
- executeQuery():運行select語句,返回ResultSet結果節
- executeUpdate():運行insert/update/delete操作,返回更新的行數。
4 Driver接口
- Driver接口由數據庫廠家提供,對於Java開發者而言,只需要使用Driver接口就可以了。
- 在編程中要連接數據庫,必須先裝載特定廠商的數據庫驅動程序。不同的數據庫有不同的裝載方法。
- 驅動:就是各個廠商實現Sun公司提出的JDBC接口。即對Connection等接口的實現類的jar文件。
- 裝載mysql驅動:Class.forName("com.mysql.jdbc.Driver");
- 裝載oracle驅動:Class.forName("com.jdbc.driver.OracleDriver");
DriverManager接口
- DriverManager接口是JDBC的管理層,作用於用戶和驅動程序之間。
- DriverManager跟蹤可用的驅動程序,並在數據庫和相應的驅動之間建立連接。
5. ResultSet接口
- Statement執行SQL語句時返回Result結果集。
- ResultSet提供的檢索不同類型字段的方法,常用的有:
- getString():獲得在數據庫裏是varchar,char等數據類型的對象。
- getFloat():獲得數據庫裏是Float類型的對象
- getDate():獲得數據庫裏是Date類型的對象
- getBoolean():獲得數據庫裏是Boolean類型的數據
最後操作完之後的,關閉順序:
- 依序關閉使用的對象和連接
Result->Statement->Connection
下面就是簡單的介紹下,java中的增刪改查了,其實前面的部分大家知道了,之後的內容就和我們平常操作數據庫是一樣的了,只是換了種語言,換了一種API。
增加、刪除和修改數據:
增加數據:
String name;
String id;
PreparedStatement psql;
ResultSet res;
//預處理添加數據,其中有兩個參數--“?”
psql = con.prepareStatement("insert into usertable (empno,ename,job,hiredate,sal) "
+ "values(?,?,?,?,?)");
//注:這裏的index裏面的 1,2,3,4,5就是指的上面語句中第幾個?的位子,即就是動態的執行SQL,後附值
psql.setInt(1, 3212); //設置參數1,創建id爲3212的數據
psql.setString(2, "jun"); //設置參數2,name 爲jun
psql.setString(3, "manager"); //設置參數3 爲職稱
DateFormat dateFormat2 = new SimpleDateFormat("yyyy-MM-dd");
Date myDate2 = dateFormat2.parse("2010-09-13");
psql.setDate(4,new java.sql.Date(myDate2.getTime()));
psql.setFloat(5, (float) 2000.3);
psql.executeUpdate(); //執行更新
更新數據:
PreparedStatement psql;
//預處理更新(修改)數據,將jun的sal改爲5000.0
psql = con.prepareStatement("update usertable set sal = ? where ename = ?");
psql.setFloat(1,(float) 5000.0);
psql.setString(2,"jun"); //動態的給sql附完值 , 完成了完整的SQL語句
psql.executeUpdate(); //執行update跟新語句,實現更新數據
刪除數據:
PreparedStatement psql;//預處理刪除數據
psql = con.prepareStatement("delete from usertable where sal > ?");
psql.setFloat(1, 4500); //動態的給sql附完值 , 完成了完整的SQL語句
psql.executeUpdate(); //執行delete刪除語句,實現數據刪除提交
psql.close();
|