JDBC

1.JDBC API

做的三件事情主要是通过以下类/接口实现:

DriverManager 管理jdbc驱动
Connection 连接(通过DriverManager产生)
Statement(PreparedStatement) 增删改查(通过Connection产生)
CallableStatement 调用数据库中的存储过程/存储函数(通过Connnection产生)
Result 返回的结果集(通过上面的Statement等产生)

方法简介:
Connection 产生操作数据库对象:

Connnection产生Statement对象:createStatement()
Connnection产生PreparedStatement对象:prepareStatement()
Connnection产生CallableStatement对象:prepareCall()

Statement操作数据库:
增删改:executeUpdate()
查询:executeQuery()

ResultSet:保存结果集 select * from xxx
next():判断下一行是否有数据(true/false)
getXXX(字段名|位置):获取具体的字段值

PreparedStatement操作数据库:
因为public interface PreparedStatement extends Statement
因此
增删改:executeUpdate()
查询:executeQuery()
赋值操作:setXXX()

PreparedStatement与Statement在使用时的区别:
1.Statement
写String sql=”xxx”;
之后executeUpdate(sql)
2.PreparedStatement
在String sql=”xxx”中可能存在占位符?(在创建PreparedStatement时,将sql预编译)
executeUpdate()
SetXXX()替换占位符?(两个参数,第一个用1234表示第几个?;第二个则是对应的值,数字就直接写,字符串加双引号)
推荐使用PreparedStatement原因如下:
1.编码更加简便(虽然代码长点,但是避免了字符串拼接)

String name="zs";
int age=23;

//stmt:(stmt要先创建为null)
String sql="insert into student(stuno,stuname) values('"+name+"',"+age+")";//字符串拼接
stmt.executeUpdate(sql);

pstmt:(也要先创建为null)
String sql="insert into student(stuno,stuname) values(?,?)";
pstmt=connection.preparedStatement(sql);//预编译SQL
pstmt.setString(1,name);
pstmt.setInt(2,age);

2.提高性能(因为预编译)
3.安全(可以有效地防止sql注入)

2.JDBC访问数据库的具体步骤

a.导入驱动,加载具体的驱动类(eclipse里面先把jar包复制过来,再buildpath):
Class.forName(“具体驱动类”);
b.与数据库建立连接:
Connection connection=DriverManager.getConnection(“连接字符串”,”用户名”,”密码”);
c.发送sql,执行sql命令(增删改、查):
Statement stmt=connection.createStatement();
String sql=”xxxx”;(按照表的属性来写,自己写代码主要是改这个sql,其他的都是模板)
int count=stmt.executeUpdate(sql);//返回值表示增删改几条数据;如果是查询,则是executeQuery,同时返回的不是一个数,而是结果集
//ResultSet
//最后记得关闭一下
if(stmt!=null) stmt.close();
if(connection!=null) connection.close();//先开的后关
d.处理结果集(需要查询时)

3.数据库驱动

驱动jar具体驱动类连接字符串(数据库名:IP+端口号)
Oracleojdbc-x.jaroracle.jdbc.OracleDriverjdbc:oracle:thin:@localhost:1521:ORCL
MySQLmysql-connector-java-x.jarcom.mysql.jdbc.Driverjdbc:mysql://localhost:3306/数据库实例名
SQLServersqljdbc-x.jarcom.microsoft.sqlserver.jdbc.SQLServerDriverjdbc:microsoft:sqlserver:localhost:1433;databasename=数据库实例名

4.JDBC总结(模板)

1.模板:
try{
a.导入驱动包,加载具体驱动类Class.forName("具体驱动类")
b.与数据库建立连接
connection=DriverManager.getConnection(...)
c.通过connection,获取操作数据库的对象(Statement\preparedStatement\callablestatement)
stmt=connection.createStatement()
d.(查询)处理结果集rs=pstmt.executeQuery()
while(rs.next()){
rs.getXxx(..);}
}catch(ClassNotFoundException e){...}
catch(SQLException e){...}
catch(Exception e){...}
finally{
//打开顺序与关闭顺序相反
if(rs!=null) rs.close();
if(stmt!=null) stmt.close();
if(connection!=null) connection.close();
}

[注]: JDBC中,除了Class.forName() 抛出ClassNotFoundException,其余方法都抛SQLException

2.JSP访问数据库

 JSP就是在html中嵌套JAVA代码,因此JAVA代码可以直接写在JSP里(<%…%>)
 导包操作
   JAVA项目:1.JAR包复制到工程中;2.右键该JAR:build path->add to buile path
   Web项目:JAR包复制到WEB-INF中lib即可
 核心:就是把JAVA中JDBC代码复制到JSP的<%..%>中
[注]: 如果JSP出现:XXX import is not resolved …
尝试解决步骤:
 a.可能是tomcat、jdk版本问题:右键项目->build path,将其中报错的library或lib删除后重新导入
 b.情空各种缓存:右键项目->clean tomcat… (project->clean或进tomcat目录删除里面work的子目录)
 c.删除之前的tomcat,重新解压缩、配置tomcat重启电脑
 d.把java类放到包里面(新建一个),然后在JSP里面导包

3.JAVABean(一个JAVA类)

 将JSP里面登陆操作的代码,转移到了java文件中,其中的LoginDao.java就叫JAVABean

JAVABean的作用:提高代码复用、减轻JSP复杂度

JAVABean的定义:public修饰的类,public无参构造以及所有属性(有的话)都是private,并且提供set/get(如果是Boolean类型,则get可以换成is)

使用层面JAVABean分为两类:
 a.封装业务逻辑的JAVABean(LoginDao.java封装了登陆逻辑)
   可以将JSP中的JDBC代码封装到Login.java类中
 b.封装数据的JAVABean(实体类、Student.java、Person.java)
   对应于数据库中的一张表
   Login login=new Login(uname,wpwd);//即用Login对象封装了2个数据(用户名和密码)
封装数据的JAVABean对应于数据库中一张表:Login(name,pwd)
封装业务逻辑的JAVABean用于操作一个封装数据的JavaBean

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值