JAVA数据库的操作(增、删、改、查)
JAVA數據庫的操作(增、刪、改、查)
- 一、首先與數據庫建立連接
- 二、數據庫的增、刪、改、查
- 1.增
- ①首先我們編寫SQL語句
- ②預編譯
- ③設置占位符的值
- ④執行
- ⑤完整代碼
 
- 2.刪
- 3.改
- 4.查
- ①首先我們編寫SQL語句
- ②創建Statement對象用于執行SQL語句
- ③執行SQL語句
- ④遍歷結果集
- ⑤完整代碼
 
 
- 三、總結
- 1、對于Statement
- 2、對于PreparedStatement
 
一、首先與數據庫建立連接
static Connection con; //聲明了一個全局變量方便使用 public static void SQLConnect() {try {Class.forName("com.mysql.jdbc.Driver"); //加載數據庫驅動String url="jdbc:mysql://localhost:3306/*****?autoReconnect=true&useSSL=false"; //*****位置填寫數據庫的名字String usename="root"; //數據庫用戶名String psw="root"; //數據庫密碼con = DriverManager.getConnection(url,usename,psw); //建立連接} catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}具體步驟參考這個鏈接
 https://blog.csdn.net/weixin_44652589/article/details/117999530
二、數據庫的增、刪、改、查
1.增
PreparedStatement繼承自Statement,都是接口。這里我們推薦使用PreparedStatement,來執行數據庫的增加操作,而不用Statement。
 因為PreparedStatement可以使用占位符,是預編譯的,批處理比Statement效率高。
PreparedStatement 是一個特殊的Statement對象,如果我們只是來查詢或者更新數據的話,最好用PreparedStatement代替Statement,因為它有以下有點:
 1.簡化Statement中的操作
 2.提高執行語句的性能
 3.可讀性和可維護性更好
 4.安全性更好。
 5.使用PreparedStatement能夠預防SQL注入攻擊,所謂SQL注入,指的是通過把SQL命令插入到Web表單提交或者輸入域名或者頁面請求的查詢字符串,最終達到欺騙服務器,達到執行惡意SQL命令的目的。注入只對SQL語句的編譯過程有破壞作用,而執行階段只是把輸入串作為數據處理,不再需要對SQL語句進行解析,因此也就避免了類似select * from user where name=‘aa’ and password=‘bb’ or 1=1的sql注入問題的發生。
①首先我們編寫SQL語句
String insertSQL = "insert into stubase(id,name,sex,dep,math,eng) values (?,?,?,?,?,?)";②預編譯
PreparedStatement stat = con.prepareStatement(insertSQL);③設置占位符的值
需要設置整形數據就使用setInt()方法。
 需要設置字符串數據就使用setString()方法。
 方法中的第一個參數是第幾個占位符,從1開始。
④執行
stat.executeUpdate();⑤完整代碼
try {String insertSQL = "insert into stubase(id,name,sex,dep,math,eng) values (?,?,?,?,?,?)";PreparedStatement stat = con.prepareStatement(insertSQL);stat.setInt(1,100);stat.setString(2,"String");stat.setString(3,"String");stat.setString(4,"String");stat.setInt(5,100);stat.setInt(6,100);stat.executeUpdate();System.out.println(con);} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}2.刪
與上述同理,首先我們編寫SQL語句
 然后創建Statement對象(也可以用PreparedStatement,這里演示一下Statement的使用)
 最后執行。
3.改
這里仍然使用的是PreparedStatement,但是我在寫SQL語句時沒有使用占位符,而是使用了轉義字符,兩者都可以,我本人也認為占位符比較方便,這里只是演示轉義字符的使用。
try {String sql="update stubase set "+ "name=\'"+s.getName()+"\',sex=\'"+s.getSex()+"\',dep=\'"+s.getDep()+"\',math="+s.getMath()+",eng="+s.getEng()+" "+"where id="+s.getId();PreparedStatement stat = con.prepareStatement(sql);stat.executeUpdate();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}4.查
查相對比較麻煩,增、刪、改執行后的返回值位受影響的行數,而查詢操作則會返回一張數據表。要對這張數據表進行操作,來獲取值。
①首先我們編寫SQL語句
這里我們查詢全部
String sql = "select * from stubase";②創建Statement對象用于執行SQL語句
Statement stmt = con.createStatement();③執行SQL語句
ResultSet res = stmt.executeQuery(sql);④遍歷結果集
res初始指向查詢到的數據表的第一行的上一行。
 res.next()會使指針移動至下一行,它的返回值位布爾類型(boolean)。如果下一行有數據那么返回值位true,否則為false。
獲取整形數據就使用getInt()方法。
 獲取字符串數據就使用getString()方法。
 方法中的參數是查詢到的結果表的第幾列,依舊從1開始。.
可以在while循環中對獲取的數據進行操作,例如添加到ArrayList中,方便我們的使用。
while(res.next()) {int id = res.getInt(2);String name = res.getString(3);String sex = res.getString(4);String dep = res.getString(5); int math = res.getInt(6);int eng = res.getInt(7);}⑤完整代碼
String sql = "select * from stubase";Statement stmt = con.createStatement();ResultSet result = stmt.executeQuery(sql);while(res.next()) {int id = res.getInt(2);String name = res.getString(3);String sex = res.getString(4);String dep = res.getString(5); int math = res.getInt(6);int eng = res.getInt(7);}三、總結
我們既可以用Statement,也可以用PreparedStatement。
 使用 Statement 對象。在對數據庫只執行一次性存取的時侯,用 Statement 對象進行處理。PreparedStatement對象的開銷比Statement大,對于一次性操作并不會帶來額外的好處。
 PreparedStatement可以使用占位符。
1、對于Statement
1.執行查詢操作時使用executeQuery(String sql),返回值為Resultset 類型。
Resultset res = executeQuery(String sql) ;2.執行增、刪、改操作時使用executeUpdate(String sql) ,返回值是整形,意義為受影響的行數。
int res = executeUpdate(String sql) ;2、對于PreparedStatement
1.執行查詢操作時使用executeQuery( ),返回值為Resultset 類型。
Resultset res = executeQuery() ;2.執行增、刪、改操作時使用executeUpdate( ) ,返回值是整形,意義為受影響的行數。
int res = executeUpdate() ;總結
以上是生活随笔為你收集整理的JAVA数据库的操作(增、删、改、查)的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: linux软件依赖库,【Linux】ub
- 下一篇: mysqlslap详解--MySQL自带
