JDBC——基于Mysql的基本操作
一、JDBC連接數據庫6個步驟:
1、加載并注冊驅動程序
在連接數據庫之前,首先要加載想要連接的數據庫的驅動到JVM(Java虛擬機),通過java.lang.Class類的靜態方法forName(String className)實現。
例:
成功加載后,會將Driver類的實例注冊到DriverManager類中。
2、創建數據庫的連接
數據庫,需要向java.sql.DriverManager請求并獲得Connection對象,該對象就代表一個數據庫的連接。
使用DriverManager的getConnectin(String url , String username , String password )方法傳入指定的欲連接的數據庫的路徑、數據庫的用戶名和密碼來獲得。
例:
//連接MySql數據庫 String url = "jdbc:mysql://127.0.0.1:3306/student";String user = "root";String password = "";try {Connection con = DriverManager.getConnection(url, user, password);} catch (SQLException e) {System.out.println("數據庫連接失敗!"); e.printStackTrace();}3、創建一個Statement
要執行SQL語句,必須獲得java.sql.Statement實例,Statement實例分為以下3 種類型:
具體的實現方式:
Statement stmt = con.createStatement() ; PreparedStatement pstmt = con.prepareStatement(sql) ;4、執行SQL語句
Statement接口提供了三種執行SQL語句的方法:executeQuery 、executeUpdate和execute
具體實現的代碼:
ResultSet rs = stmt.executeQuery(sql) ; int rows = stmt.executeUpdate(sql) ; boolean flag = stmt.execute(sql) ;5、遍歷結果集
兩種情況:
ResultSet包含符合SQL語句中條件的所有行,并且它通過一套get方法提供了對這些 行中數據的訪問。
使用結果集(ResultSet)對象的訪問方法獲取數據:
(列是從左到右編號的,并且從列1開始)
6、關閉JDBC對象資源
操作完成以后要把所有使用的JDBC對象全都關閉,以釋放JDBC資源,關閉順序和聲明順序相反:
例:
if(rs !=null){ // 關閉結果集 try {rs.close();} catch (SQLException e) {e.printStackTrace();} } if(stmt !=null){ // 關閉聲明 try {stmt.close();} catch (SQLException e) {e.printStackTrace();} } if(conn !=null){ // 關閉連接對象 try {conn.close();} catch (SQLException e) {e.printStackTrace();} }1、查詢:
package jdbc1;import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import javax.management.RuntimeErrorException; import com.mysql.cj.jdbc.Driver;public class JDBC1 {public static void main(String[] args) {Connection con = null;Statement stmt = null;ResultSet rs = null;try {// 1、注冊并加載驅動//Driver driver = new Driver();//DriverManager.registerDriver(driver);//這種注冊方式會注冊兩次,推薦使用下面那種Class.forName("com.mysql.cj.jdbc.Driver");// 2、獲取連接對象String url = "jdbc:mysql://127.0.0.1:3306/student";String user = "root";String password = "";con = DriverManager.getConnection(url, user, password);// 3、獲取操作數據庫的對象stmt = con.createStatement();// 4、向數據庫發送查詢語句String sql = "select * from student ";rs = stmt.executeQuery(sql);// 5、遍歷結果集,獲取查詢對象while (rs.next()) {// 遍歷一行后,才會跳轉到下一行int sno = rs.getInt("sno");//String sname = rs.getString(2);// 和上一行不同的寫法String sex = rs.getString(3);System.out.println(sno + " " + "" + sname + " " + sex);}} catch (Exception e) {throw new RuntimeException(e);} finally {// 6.關閉連接,釋放資源if (rs != null) {try {rs.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}if (stmt != null) {try {stmt.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}if (con != null) {try {con.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}} }2、更新:
package jdbc1; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement;public class JDBC1 {public static void main(String[] args) {Connection con = null;Statement stmt = null;try {Class.forName("com.mysql.cj.jdbc.Driver");// 2、獲取連接對象String url = "jdbc:mysql://127.0.0.1:3306/student";String user = "root";String password = "";con = DriverManager.getConnection(url, user, password);// 3、獲取操作數據庫的對象stmt = con.createStatement();// 3.創建SQL語句String sql = "insert into student values(121530601,'張三','女',16,6)";// 4. 執行SQL語句int row = stmt.executeUpdate(sql);System.out.println(row);} catch (Exception e) {} finally {// 5. 釋放資源if (stmt != null) {try {stmt.close();} catch (Exception e) {e.printStackTrace(); // 打印異常}}if (con != null) {try {con.close();} catch (Exception e) {e.printStackTrace(); // 打印異常}}}} }二、使用ResultSet更新數據:
ResultSet是否滾動
ResultSet是否可更新
查詢學號為121530602的學生的基本信息輸出后修改其姓名:
// 3、獲取操作數據庫的對象stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);// 4、向數據庫發送查詢語句String sql = "select * from student where sno=121530602";rs = stmt.executeQuery(sql);// 5、遍歷結果集,獲取查詢對象System.out.println("學號"+"\t\t"+"姓名"+"\t\t"+"性別"+"\t\t"+"年齡"+"\t\t"+"班級");while (rs.next()) {// 遍歷一行后,才會跳轉到下一行int sno = rs.getInt("sno");//String sname = rs.getString(2);// 和上一行不同的寫法String sex = rs.getString(3);String age = rs.getString(4);String Class = rs.getString(5);System.out.println(sno + "" + "\t\t" + sname + "\t\t" + sex+"\t\t"+age+"\t\t"+Class);}rs.absolute(1); rs.updateString("sname","趙四"); rs.updateRow(); //將當更新保存到數據庫輸出所有學生的所有信息,然后添加一名新學生:
// 3、獲取操作數據庫的對象stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);// 4、向數據庫發送查詢語句String sql = "select * from student";rs = stmt.executeQuery(sql);// 5、遍歷結果集,獲取查詢對象System.out.println("學 號"+"\t\t"+"姓名"+"\t\t"+"性別"+"\t\t"+"年齡"+"\t\t"+"班級");while (rs.next()) {// 遍歷一行后,才會跳轉到下一行int sno = rs.getInt("sno");//String sname = rs.getString(2);// 和上一行不同的寫法String sex = rs.getString(3);String age = rs.getString(4);String Class = rs.getString(5);System.out.println(sno + "" + "\t\t" + sname + "\t\t" + sex+"\t\t"+age+"\t\t"+Class);}rs.moveToInsertRow(); rs.updateString("sno","121530605"); rs.updateString("sname","老八"); rs.updateString("sex","男" ); rs.updateInt("age", 26); rs.updateInt("Class",8); rs.insertRow();三、預編譯語句實現數據更新:
添加數據:
PreparedStatement pStmt = con.prepareStatement("insert into student (name,pwd,email) values(?,?,?)"); pStmt.setString(1,"dream"); pStmt.setString(2,"111"); pStmt.setString(3, "dd@a.com"); int rtn= pStmt.executeUpdate();修改數據:
PreparedStatement pStmt = con.prepareStatement("update student set pwd=?,email=? where name=?"); pStmt.setString(1,“222"); pStmt.setString(2,“a@a.c"); pStmt.setString(3,“dream"); int rtn= pStmt.executeUpdate();刪除數據:
PreparedStatement pStmt = con.prepareStatement("delete from student where name=?"); pStmt.setString(1,"dream"); int rtn= pStmt.executeUpdate();總結
以上是生活随笔為你收集整理的JDBC——基于Mysql的基本操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: try catch finally语句详
- 下一篇: 鲲鹏云HCIA知识总结(一)