JDBC小结

http://blog.csdn.net/qiyuexuelang/article/details/8827294


JDBC(Java DATABASE CONNECTIVITY|CONNECTION) 基于java语言访问数据库的一种技术



一、介绍JDBC


JDBC: API,sun公司制定的标准.
一部分提供给程序员,接口  java.sql包下   connection  statement resultset ....
一部分提供给数据库厂商,实现.ojdbc14.jar   增加类库    添加第三方jar包
      
开发JDBC应用程序
1.新建java project
2.增加类库:ojdbc14.jar
build path
3.开发应用程序


二:错误种类:
ClassNotFoundException:正确增加了类库(ojdbc14.jar) / 检查驱动类名称


The NetWork Adapter could not establish the connection:检查连接字符串


SQL命令未正确结束:sql语句  sql语句去掉分号


列名无效:检查列名   结果集中的列名

三、驱动类库
mysql数据库的驱动类库: mysql-connector-java-5.1.6-bin.jar
oracle数据库的驱动类库: ojdbc14.jar

四、开发步骤:
1   注册驱动,根据不同数据库注册不同的驱动.   
Class.forName("oracle.jdbc.driver.OracleDriver")
(mysql) “com.mysql.jdbc.Driver"

                 new oracle.jdbc.driver.OracleDriver();
2    通过驱动管理器获得连接:
Connection conn = DriverManager.getConnection(url,用户名,密码)
(oracle)url = "jdbc:oracle:thin:@ip地址:1521:数据库名(orcl)
                         jdbc:oracle:thin:@192.168.11.188:1521:orcl
(mysql) jdbc:mysql://ip地址:3306/数据库名(database对象的名字)
3    通过连接(Connection)生成语句(Statement)对象
Statement stmt = conn.createStatement();
PreparedStatement pstmt = conn.prepareStatement(sql);
4     传递语句对象,并返回结果
String sql = "select * from emp";
ResultSet rs = stmt.executeQuery(sql);
//ResultSet rs = prepareStmt.executeQuery();
int n = stmt.executeUpdate(sql);
while(rs.next()){
......
}
5    释放资源
  rs.close();
  stmt.close();
  conn.close();

元数据:MetaData(两个接口)  元标记:修饰其他标记的标记
DatabaseMetaData 提供的是关于数据库的各种信息  关于数据库的元数据
ResultSetMetaData   获得表的信息   关于结果集的元数据 

关键字:
Connection   特定数据库的连接(也是会话)
Statement    用于执行静态的sql语句 并返回它所生成结果的对象     
PreparedStatement    是Statement 的子类   表示预编译sql语句的对象 
ResultSet     表示数据库结果集,通常通过执行查询数据库的语句生成

Statement的三个方法
1)ResultSet executeQuery(sql):select
2)int executeUpdate(sql):insert/update/delete
3)boolean execute():可以执行上述两种sql,当执行sql有结果集产生时,返回true,
当执行的是dml操作,或者没有结果集,返回false;
boolean r = stmt.execute(sql);
if(r){
ResultSet rs = stmt.getResultSet();
}


 PreparedStatement


  分页问题
  limit()
  rs.absolute(11);
for(int i = 0; i < 5;i++){
if(rs.next()){
rs.g et...
}else{
break;
}
}
  Oracle分页问题  rownum
  实现方法:方法中传入一些参数,则可以返回当页的记录  参数?  返回值? 实现?

三.主键自增长方式的实现方式  
--mysql:
  1. create table student(  
  2.         id number primary key auto_increment,  
  3.         name varchar(20)  
  4.     );  
  5.     insert into student(namevalues('peter');  
  6.     insert into student(namevalues('jack');  
  7.     select * from student;  


id  name
----------
1   peter
2   jack


--mysql结束,oracle开始---
create sequence myseq start with 888 increment by 10;


insert into mystu (id, name, age, sex)
values(myseq.nextval, 'chris', 20, 'M');

jdbc -- 只适用于mysql
String sql = "insert into student(name) values('"+name+"')";
stmt.executeUpdate(sql,Statement.RETURN_GENERATED_KEYS);
ResultSet rs = stmt.getGeneratedKeys();
rs.next();
System.out.println(rs.getInt(1));


事务:JDBC 事务默认是自动提交
  conn.setAutoCommit(false);
  conn.commit();
  conn.rollback();
  
  create table card(id int primary key auto_increment,username varchar(30),money double);
  insert into card(username,money) values('cw',1000000);
  insert into card(username,money) values('wo',10);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值