淺談JDBC連接數(shù)據(jù)庫步驟
JDBC連接數(shù)據(jù)庫步驟一.加載驅動
導入jar包
Class.forName("driver")
作用:不只是創(chuàng)建一個類的Class對象,它加載了整相關程序的類。
JDBC連接數(shù)據(jù)庫步驟二.獲取連接對象
Connectioncon=DriverManager.getConnection(url,user,pwd)
url:告訴數(shù)據(jù)庫的位置
JDBC連接數(shù)據(jù)庫步驟三.創(chuàng)建語句對象,執(zhí)行SQL
增刪改
返回影響所有行
非查詢
- Statement:
- Statementst=con.CreateStatement()
- inti=st.executeUpdate(sql)
下標從一開始
- inti=st.executeUpdate(sql);
- PreparedStatement:
- PreparedStatementps=con.PreparedStatement("sql語句")
- ps.setXXX(n,值)
對第n個?進行賦值
區(qū)別
用st的好處
在動態(tài)組裝SQL時,指動態(tài)產(chǎn)生要執(zhí)行SQL語句
用pst的好處
更好維護
避免SQL注入
效率更高
擴展
用JDBC的批處理(BATCH)可以提高效率
用ResultSetMetadata可以獲取列的信息(個數(shù),名稱)
查詢
- resultsetrs=pst.executePuery()
- while(rs.net())
- Stringstr=rs.getString(列的位置,列的名稱)
JDBC連接數(shù)據(jù)庫步驟四.關閉
順序
- ifrs!=nullrs.close();
- pst.close();
- con.close();
具體實例:
- privatefinalStringURL="jdbc:mysql://localhost:3306/db";
- privatefinalStringFINDALL="select*fromdept";
- privateConnectioncon;
- privatePreparedStatementps;
- privateResultSetrs;
- //查詢
- publicListfindAll(){
- Listlist=newArrayList();
- try{
- Class.forName("com.mysql.jdbc.Driver");
- con=DriverManager.getConnection(URL,"root","123");
- ps=con.prepareStatement(FINDALL);
- rs=ps.executeQuery();
- while(rs.next()){
- DeptDTOdto=newDeptDTO();
- dto.setDeptId(rs.getInt("deptId"));
- dto.setName(rs.getString("depName"));
- dto.setPhone(rs.getString("phone"));
- System.out.println(dto.getDeptId()+""+dto.getName()+""+dto.getPhone());
- list.add(dto);
- }
- con.close();
- }catch(ClassNotFoundExceptione){
- //TODOAuto-generatedcatchblock
- e.printStackTrace();
- }catch(SQLExceptione){
- //TODOAuto-generatedcatchblock
- e.printStackTrace();
- }
- returnlist;
- }
- //添加,添加中關閉連接的方法相比查詢中的關閉方法更好一些
- publicvoidadd(DeptDTOdto){
- try{
- Class.forName("com.jdbc.mysql.Driver");
- con=DriverManager.getConnection("jdbc:mysql://localhost:3306/db","root","123");
- ps=con.prepareStatement("insertintodept(deptId,depName,phone)values(?,?,?)");
- ps.setInt(1,dto.getDeptId());
- ps.setString(2,dto.getName());
- ps.setString(3,dto.getPhone());
- ps.execute();
- }catch(ClassNotFoundExceptione){
- //TODOAuto-generatedcatchblock
- e.printStackTrace();
- }catch(SQLExceptione){
- //TODOAuto-generatedcatchblock
- e.printStackTrace();
- }
- finally{
- try{
- if(con!=null&&!con.isClosed()){
- con.close();
- }
- }catch(SQLExceptione){
- //TODOAuto-generatedcatchblock
- e.printStackTrace();
- }
- }
- }
- le.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:35)
- atoracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:801)
- atjava.sql.DriverManager.getConnection(UnknownSource)
- atjava.sql.DriverManager.getConnection(UnknownSource)
- attool.DbConnect.getConnect(DbConnect.java:45)
- attool.DbConnect.main(DbConnect.java:54)
【編輯推薦】