Eclipse中配置和使用JDBC操作MySQL
一、下載MySQL的JDBC驅動
訪問網址:https://mvnrepository.com
搜索mysql-connector-java
點進去後,選擇要下載的版本:
點"jar",保存!
二、使用JDBC驅動操作Mysql表
1、建立工程
Eclipse中在File->new->project,建立一個“Java Project”工程。
輸入工程名稱MyJDBC,下一步,點:Open Perspective,然後Finish
即建立了MyJDBC工程
2、導入驅動
- 將下載jar文件,拷貝到工程文件目錄(複製文件,到eclipse的MyJDBC工程上粘貼)
- 在該jar文件上,右鍵build path ->add to build path
3、Mysql數據庫表JDBC操作步驟
(1)加載JDBC驅動程序
- forName(String driverName)加載JDBC驅動
- 不同數據庫的JDBC驅動名稱不同
Class.forName(“com.mysql.cj.jdbc.Driver”);
下圖是常見的數據庫驅動:
(2)建立數據庫連接
String URL = "jdbc:mysql://localhost:3306/jsp_mysql?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT";
String UNAME = "root";
String UPASS = "";
Connection conn = DriverManager.getConnection(URL,UNAME,UPASS);
(3)數據庫操作
數據庫操作有三種方式:
- Statement對象執行靜態SQL語句
stmt = conn.createStatement();
String Sql = "delete from users where UserId=1 ";
int counts = stmt.executeUpdate(Sql);//有參數
if (counts>0) {
System.out.println("操作成功");
}
- PreparedStatement執行動態SQL語句
String Sql = "delete from users where UserId=?";
stmt = conn.prepareStatement(Sql);
stmt.setString(1, 1);//設置參數值
//執行SQL,返回受影響的行數
int counts = stmt.executeUpdate();//無參數
if (counts>0) {
System.out.println("操作成功");
}
- CallableStatement執行存儲過程
stmt = conn.prepareCall("{call delUser(?,?,?)}");
//設置參數值
stmt.setInt(1,1);
//執行SQL,返回結果
stmt.execute();//無參數的execute
stmt.registerOutParameter(2, Types.INTEGER);//設置過程調用的輸出值類型
int delres = stmt.getInt(2);//取值
stmt.registerOutParameter(3, Types.INTEGER);
int rescounts = stmt.getInt(3);//取值
if (rescounts>0) {
System.out.println("刪除記錄ID:"+i1+",刪除了"+delres+"條,剩餘"+rescounts+"條");
}
其中 注:delUser存儲過程內容:
delete from users where UserId=p_id;
select ROW_COUNT() into deleteUsers;
select COUNT(UserId) from users into userCounts;
(4)對執行結果進行分析處理
直接判斷是否成功:
int rs = stmt.executeUpdate(Sql);
if (rs>0) System.out.println("操作成功");
else
System.out.println(“操作失敗");
提取出SQL查詢語句返回的結果:
rs = stmt.executeQuery();
while (rs.next()) {
int UId = rs.getInt("UserId");
System.out.println("表記錄:"+UId);
}
(5)關閉連接
數據庫操作完成,關閉JDBC對象,釋放資源
關閉順序和聲明順序相反:
1)關閉結果集ResultSet對象;
2)關閉Statement/PreparedStatement/CallableStatment對象;
3)關閉連接對象conn
try {
if (rs!=null) rs.close();
if (stmt!=null) stmt.close();
if (conn!=null) conn.close();
} catch (Exception e2) {
// TODO: handle exception
e2.printStackTrace();
}
4、JDBC操作Mysql實例
- 建立實驗用數據庫jsp_mysql和表Users(可藉助於navicat工具)
-例子結構如圖:
(1)靜態SQL
- 在MyJDBC工程src上右鍵new->class,建立一個JAVA Class,命名:JDBCTest
- 插入數據庫記錄
-源碼如下:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Date;
public class JDBCTest {
private static final String URL = "jdbc:mysql://localhost:3306/jsp_mysql?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT";
private static final String UNAME = "root";
private static final String UPASS = "";
public static void updateDB(){
Connection conn = null; //建立連接
Statement stmt= null;
try {
Class.forName("com.mysql.cj.jdbc.Driver");
//建立數據庫連接
conn = DriverManager.getConnection(URL,UNAME,UPASS);
//建立SQL語句,並執行
stmt = conn.createStatement();
String Sql = "insert into users(UserName,UserPass,UserBirth, UserSubj,UserScores) values "
+ "('王五','',str_to_date('19950102', '%Y%m%d'),'計算機',99)";
//執行SQL,返回受影響的行數
int counts = stmt.executeUpdate(Sql);
if (counts>0) {
System.out.println("數據庫操作成功");
}
}catch( ClassNotFoundException e) {
e.printStackTrace();
}
catch(SQLException e) {
e.printStackTrace();
}catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
finally {
//關閉連接和語句
try {
if (stmt!=null) stmt.close();
if (conn!=null) conn.close();
} catch (Exception e2) {
// TODO: handle exception
e2.printStackTrace();
}
}
}
public static void main(String[] args) {
updateDB();
}
}
右鍵run as->java application運行
對於update和delete只需更換Sql語句。
- 查詢記錄
-返回查詢結果的語句:
String Sql = "select * from users";
//執行SQL,返回受影響的記錄結果集
rSet = stmt.executeQuery(Sql);
while (rSet.next()) {
int UId = rSet.getInt("UserId");
String Uname = rSet.getString("UserName");
Date Udate = rSet.getDate("UserBirth");
System.out.println("數據庫記錄結果:");
System.out.println("UserId:"+UId );
System.out.println("UserName:"+Uname);
System.out.println("UserBirthday:"+Udate);
}
(2)動態SQL
修改靜態SQL程序,使用如下語句,即可完成動態SQL:
- 增刪改操作
stmt = conn.prepareStatement(Sql);
//設置參數值
stmt.setString(1, "XX");
stmt.setDate(2,XX);
stmt.setInt(3, XX);
int counts = stmt.executeUpdate();//無參數的execute
- 查詢
String Sql = "select * from users where UserName like ?";
stmt = conn.prepareStatement(Sql);
stmt.setString(1, "%一%");
//執行SQL,返回記錄結果集
rs = stmt.executeQuery();