使用JDBC四個大類
1. DriverManager:管理jdbc驅動
2. Connection:連接(通過DriverManager產生)
3. Statement/PreparedStatement:增刪改executeUpdate()查executeQuery()
CallableStatement調用數據庫中 存儲過程/存儲函數 (皆通過Connection產生)
statement()方法:增刪改executeUpdate()查executeQuery()
PreparedStatement(sql語句)方法:同上+setXXX(postion,value)
4. Resultset:返回到結果集 (通過Statement等產生)
方法:next():光標下移,判斷是否有下一條數據:true/false
getXXX(字段名/位置):獲取具體的字段值 XXX為int/String/...
Statement與PreparedStatement的區別:(推薦用PreparedStatement)
1. Statement:
SQL語句
executeUpdata(SQL)
2. PreparedStatement
sql(可能存在占位符‘?’)
在創建PreparedStatement對象時,將sql預編譯PreparedStatement(sql)
executeUpdata()
setXXX(postion,value) 將sql中占位符?替換
JDBC訪問數據庫具體步驟
1. 導入驅動,加載具體驅動類
2. 與數據庫建立鏈接
3. 發送sql語句,執行
4. 處理結果集合(查)
**補充:導入驅動和具體驅動類:
驅動jar(x為版本號) 具體驅動類 連接字符串
Oracle ojdbc-x.jar oracle.jdbc.OracleDriver jdbc:oracle:thin:@localhost:1521:ORCL
MySQL mysql-connector-java-x.jar com.mysql.jdbc.Driver jdbc:mysql://localhost:3306/數據庫實例名
SQL server sqljdbc-x.jar com.microsoft.sqlserver.jdbc.SQLServerDriver jdbc:microsoft:sqlserver:localhost:1433;databasename=數據庫實例名
代碼示例:
用java在數據庫中增刪改數據
package jdbcproject; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; public class add { //sql數據庫連接字符串 private static final String URL="jdbc:sqlserver://localhost:1433;databasename=javatest"; //sql用戶名 和密碼 用作連接用 private static final String USERNAME="sa"; private static final String PWD="cc123nice"; public static void update() throws ClassNotFoundException, SQLException {//增刪改 //導入驅動,加載具體驅動類 Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); //與數據庫建立鏈接 Connection connection = DriverManager.getConnection(URL, USERNAME, PWD); //發送sql語句(增刪改) Statement stmt = connection.createStatement(); //實現增刪改 String sql="insert into test values('cc',13)"; // String sql="update into test values('cd',13)"; // String sql="delete table test"; //返回增刪改幾條數據 int num = stmt.executeUpdate(sql); if(num>0) System.out.println("操作成功"); stmt.close(); connection.close(); } public static void main(String[] args) { try { update(); } catch (ClassNotFoundException | SQLException e) { e.printStackTrace(); } } }
JavaBean
1. 將jsp中的java代碼轉移到src的一個類中 稱之為javabean
2. 要求:
public修飾類 ,public 無參構造
所有屬性(如果有)都是private,且提供get/set方法(如果boolean 則為is方法)
3. 優點: 減輕復雜度
提高復用率
封裝業務邏輯 (相當於運用數據庫的表)
封裝數據 (對應於數據庫的一張表)
代碼示例:
三板塊 Javabean /JSP/lib中包導入
1. first.logindao為JavaBean封裝了sql語句(命名規范與數據庫連接的類以dao結尾)
package first; import java.sql.*; public class logindao { //sql數據庫連接字符串 private static final String URL="jdbc:sqlserver://localhost:1433;databasename=javatest"; //sql用戶名 和密碼 用作連接用 private static final String USERNAME="sa"; private static final String PWD="cc123nice"; public int login(String name,String pws) { Connection connection=null; Statement stmt=null; ResultSet rs=null; try { //導入驅動,加載具體驅動類 Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); //與數據庫建立鏈接 connection = DriverManager.getConnection(URL, USERNAME, PWD); //發送sql語句(增刪改) stmt = connection.createStatement(); String sql="select count(*) from test where name='"+name+"' and pwd='"+pws+"'"; rs=stmt.executeQuery(sql); int count=-1; if(rs.next()) { count = rs.getInt(1); } return count; } catch (ClassNotFoundException e) { e.printStackTrace(); return -1; } catch (SQLException e) { e.printStackTrace(); return -1; }catch (Exception e) { e.printStackTrace(); return -1; } } }
2. JSP中設置用戶輸入界面與跳轉結果界面
--login.jsp
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Insert title here</title> </head> <body> <form action="check.jsp" method="post"> 用戶名:<input type="text" name="uname"><br/> 密碼: <input type="password" name="upwd"/><br/> <input type="submit" value="登陸"><br/> </form> </body> </html>
--check.jsp <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <%@ page import="first.logindao" %> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Insert title here</title> </head> <body> <% String name=request.getParameter("uname"); String pwd=request.getParameter("upwd"); logindao dao=new logindao(); int result=dao.login(name,pwd); if(result>0) out.print("登陸成功"); else if(result==0) out.print("用戶名/密碼有誤"); else out.print("代碼錯誤"); %> </body> </html>
3. 導入包-正常java文件導入包需要將包粘貼於根目錄下,右鍵buildpath-》configure build path(如下圖)
但對於javaweb項目中 若要導入包則只需放入lib文件夾下