一、 JDBC訪問數據庫基本步驟:
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 block
e.printStackTrace();
}
}
if (stmt != null) {
try {
stmt.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if (con != null) {
try {
con.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.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的學生的基本信息輸出後修改其姓名:
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(); //將當更新保存到數據庫
- 輸出所有學生的所有信息,然後添加一名新學生:
// 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, "[email protected]");
int rtn= pStmt.executeUpdate();
- 修改數據:
PreparedStatement pStmt = con.prepareStatement("update student set pwd=?,email=? where name=?");
pStmt.setString(1,“222");
pStmt.setString(2,“[email protected]");
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();