數據庫與java的連接


jdbc: java database connection,也就是java的數據庫連接。
作用: 完成數據庫數據和內存數據的交互。

為了屏蔽不同數據庫的差異,在內存和各種數據庫之間建立了一個接口標准。每個廠商按照接口的標准來實現接口類。


jdbc 是java連接數據庫的一套標准。該標准中定義了一系列的接口,由數據庫廠商根據自身數據庫的特點提供實現類,由開發者調用。開發者根據接口調用方法,可以屏蔽不同數據庫廠商的差異。這樣,無論連接什么數據庫都是一套API。

jdbc 操作步驟:                          流操作步驟:
① 加載驅動,建立連接                        1、建立流
② 執行SQL語句                                2、操作流
③ 關閉連接                                      3、關閉

 

SQL注入: 在執行sql語句時,由於sql語句的值是由用戶輸入的,所以是以變量接收的,如果以拼接字符串方式來執行SQL語句,一旦數據中有非法字符或者有關鍵字時,會導致語法錯誤,或者執行結果不正確的情況,這稱為SQL注入。


Statement和PreparedStatement的區別:

Statement是PreparedStatement 的父接口。在執行SQL語句時,只能以拼接字符串方式,拼接值。會引起SQL注入。而且效率低。

PreparedStatement,是預編譯SQL語句執行對象,支持占位符方式,無論數據是什么值,都當字符串處理,不會引起SQL注入。而且效率高。

 

java和數據庫的連接語法:

 1     @Override
 2     public void add(ManBean bean) {
 3         
 4         //連接對象
 5         Connection con=null;
 6         //SQL語句執行對象
 7         PreparedStatement ps=null;
 8         // 加載驅動
 9         try {
10             Class.forName("org.gjt.mm.mysql.Driver");
11             //建立連接,localhost為主機IP地址(本機),3306為mysql的端口號,
12             //testdb為數據庫的庫名,characterEncoding=utf-8為字節編碼集
13             //root為mysql的登錄名,123456為mysql的登錄密碼
14             con=DriverManager.getConnection("jdbc:mysql://localhost:3306/testdb?characterEncoding=utf-8",
15                     "root","123456");
16             System.out.println(con);
17             
18             //執行SQL語句,?為占位符
19             ps=con.prepareStatement("insert into t_man(manName,birthday,money) values(?,?,?)");
20             //填充占位符
21             ps.setString(1, bean.getName());
22             ps.setDate(2, bean.getBirthday());
23             ps.setInt(3, bean.getMoney());
24             //更新數據庫
25             ps.executeUpdate();
26         } catch (Exception e) {
27             e.printStackTrace();
28         }
29         finally{//關閉連接
30             try {
31                 ps.close();
32                 con.close();
33             } catch (Exception e) {
34                 // TODO Auto-generated catch block
35                 e.printStackTrace();
36             }
37         }
38     }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM