使用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文件夹下