JDBC的接口都在:java.sql包下
java.sql.DriverManager(類)
java.sql.Connection(資料庫連接配接對象)connection.close(); :關閉Java如資料庫的連結
connection.createStatement();
prepareStatement()建立sql預處理對象
prepareCall()建立存儲過程處理對象
java.sql.Statement(sql執行對象)
executeUpdate(String) 傳回 int(所影響函數) 執行 insert update delete
executeQuery(String) ResultSet 執行 select 傳回查詢結果 結果就包裝在 ResultSet(接口内)
批處理多條sql
addBatch(String) 添加 insert update delete
executeBatch() int[]
java.sql.PreparedStatement(SQL預處理) java.sql.ResultSet(記錄集對象)java.sql.ResultSetMetaData(查詢出來的表結構)
java.sql.CallableStatement(調用存儲過程)
DataSource (資料庫源 javax.sql)資料員:javax.sql.DataSource
DriverManager建立了Connection對象 Connection建立了接口 Statement接收Connection來實作sql語句 網頁驗證 ——邏輯運算——準備資料庫申請sql———資料庫
ResultSet方法中的resultSet.next()方法查詢
用while循環 因為while循環比較适合不知道次數的循環
查詢:舉例他有個類似光标一樣的東西如果有就傳回一個TRUE 沒有就傳回fales
如過有常用的代碼你可以将它包裝起來 節省工程量
jdbc連結:
public class Test {
private static Test ourInstance = new Test();
private DataSource dataSource = null;
public static Test getInstance() {
return ourInstance;
}
private Test() {
ComboPooledDataSource comboPooledDataSource = new ComboPooledDataSource();
try {
comboPooledDataSource.setDriverClass("com.mysql.cj.jdbc.Driver");
comboPooledDataSource.setJdbcUrl("");
comboPooledDataSource.setUser("root");
comboPooledDataSource.setPassword("");
comboPooledDataSource.setMaxPoolSize(3);
comboPooledDataSource.setMinPoolSize(1);
dataSource = comboPooledDataSource;
Connection connection = dataSource.getConnection();
System.out.println("初始化成功");
} catch (PropertyVetoException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
sql預處理
public static ResultSet getResultSet(Connection connection, String sql, Object... objects) throws SQLException {
PreparedStatement connection1 = connection.prepareStatement(sql);
for (int i = 0; i < objects.length; i++) {
connection1.setObject(i + 1, objects[i]);
}
ResultSet rs = connection1.executeQuery();
return rs;
}
public static int getUpdate(Connection connection, String sql, Object... objects) throws SQLException {
PreparedStatement pst = connection.prepareStatement(sql);
for (int i = 0; i < objects.length; i++) {
pst.setObject(i + 1, objects[i]);
}
int a = pst.executeUpdate();
return a;
}
sql事務:
public Connection getDataSource() throws SQLException {
Connection connection = dataSource.getConnection();
connection.getAutoCommit();
return connection;
}
public Connection getDataSource2() throws SQLException {
Connection connection = dataSource.getConnection();
connection.setAutoCommit(false);
return connection;
}
JDBC增删查改訓練
import java.sql.*;
import java.sql.Connection;
public class T1 {
public static <connection> void main(String[] args) throws Exception {
Connection connection = DriverManager.getConnection("jdbc:mysql://47.101.201.210/Test?useSSL=FALSE&serverTimezone=UTC",
"root",
"Sb1996350.");
Statement c = connection.createStatement();
//int a/*列印影響函數*/ = c.executeUpdate/*執行更新語句*/("");//删除 添加 更行 都是屬于更新語句
// System.out.println(a);
Connection connection1 = T2.getInstance().getconnctin();//如果有經常要用的代碼,可以将它封裝起來、用的話直接通過方法調用就行
Statement statement = connection.createStatement();//這裡将connection對象給 Statement
// 調用Statement 類中的sql執行代碼
ResultSet resultSet = statement.executeQuery("select *from student");//jdbc一切以查詢為主如果列起别名查詢的時候就輸别名
//resultSet 方法中每一個表的資料類型都有兩種得值方式 一種是字元串類型(列的名字) 一種是整數型(第幾行)
while (resultSet.next()) {
int sid=resultSet.getInt(1);//表的第一個個字段
System.out.println(sid);
String to=resultSet.getString(2);//表的第二個字段
System.out.println(to);
}
connection.close();//用完後及時關閉 良好的代碼書寫習慣
}
}