jdbc:

  java操作数据库,jdbc是oracle公司指定的一套规范(一套接口)

  驱动:jdbc的实现类,由数据库厂商提供

  我们可以通过一套规范操作不同的数据库(多态)

  jdbc作用:  

    连接数据库

    发送sql语句

    处理结果集

jdbc操作步骤:

  1.数据库和表

  2.创建一个项目

  3.导入驱动的jar包

  4.编码:

    注册驱动

    获取连接

    编写sql

    创建预编译的语句执行者

    设置参数

    执行sql

    处理结果

    释放资源

初始化数据库和表:

CREATE DATABASE day07;
USE day07;

CREATE TABLE category(
cid varchar(20) PRIMARY KEY,
cname VARCHAR(20)
);

INSERT INTO category VALUES('c001','电器');
INSERT INTO category VALUES('c002','服饰');
INSERT INTO category VALUES('c003','化妆品');
INSERT INTO category VALUES('c004','书籍');

IDE,eclipse

  1.修改字符集 utf——8

  2.新建java项目

  3.使用自己的jdk

使用junit单元测试

  要求:  

    1.方法是public void xxx(){}

    2.在方法上i添加@test

    3.在@Test 按下 ctrl+1(快速锁定错误)

    4.在方法上右键 run as -->junit 就可以执行方法了

jdbc-api详解:

  所有的包 都是 java.sql 或者 java.sql

  DriverManager:管理了一组jdbc的操作 类

    常用方法:

      了解:注册驱动

      static void registerDriver(Driver driver)

      通过查看 com.mysql.jdbc.Driver的源码 如 下

        static{

        try{

          java.sql.DriverManager.registerDriver(new Driver());//这段代码写过

        }catch (SQLException E){

          throw new RuntimeException("Can't register driver!");

        }

      }

      驱动注册了两次,我们只需要将静态代码块执行一次,类被加载到内存中会执行静态代码块,并且只执行一次。

      现在只需要将类加载到内存中即可

      方式一:

        Class.forName("全限定名");//包名+类名  com.mysql.jdbc.Driver

      方式二:

        类名.class;

      方式三:

        对象.getClass();

    掌握:获取连接

       static connection getConnection(String url,String user,String password)

       参数1:告诉我们连接什么类型的数据库及连接哪个数据库

        协议:数据库类型:子协议 参数

      mysql: jdbc:mysql://localhost:3306/数据库名称

      oracle:jdbc:oracle:thin@localhost:1521@实例

       参数2:账户名

       参数3:密码

Connection :连接 接口

  常用方法:  

    获取语句执行者:

      statement createStatement(): 获取普通语句执行者 不安全SQL注入

      ★preparedStatement prepareStatement(String sql) :获取预编译语句执行者

      CallableStatement prepareCall(String sql ):获取调用存储过程的语句执行者

    了解:

      setAutoCommit(flase):手动开启事物

      commit():提交事务

      rollback():事务回滚

statement:语句执行者 接口

preparedStatement:预编译语句执行者 接口

    常用方法:

    设置参数:setXXX(int 第几个问号, Object 实际参数);

    eg:

     setInt,setString,setObject

    执行sql:

     ResultSet executeQuery(): 执行r语句 返回值:结果集

     int executeUpdate():执行cud语句 返回值:影响的行数

ResultSet:结果集 接口

    执行查询语句之后返回的结果集

      常用方法:

      boolean next():判断是否有下一跳记录,若有返回true且将光标移到下一行,若没有返回false

      光标一开始处于第一行第一条记录上

     获取具体内容

       getXxx(int|String)

        若参数为int:第几列

        若参数为string:列名(字段名)

       例如:

        获取cname的内容可以通过

          getString(2)

          getString("cname")

        常用方法:

          getInt

          getString 也可以获取int值

          getObject 也可以获取任意值

/////////////////////////

常见的配置文件格式:

  1.properties

    里面内容的格式 key=value

  2.xml

//////////////////////////

若我们的配置文件properties,并且防砸isrc目录下

我们可以通过 ResourceBundle工具类快速获取里面的配置信息

  使用步骤:

    1.获取ResourceBundle 对象:

     static ResourceBundle getBundle("文件名称不带后缀名")

    2.通过ResourceBundle 对象获取配置信息

     String getString(String key):通过执行key获取制定的value   

//////////

案例2-通过连接池(数据源)优化我们的操作

需求:

  使用jdbc的时候,每操作一次需要获取连接,用完后把连接释放掉,通过连接池来优化curd操作。

  技术分析:

    连接池 

/////////////////////////

连接池概述:  

  管理数据库的连接,

  作用:

    提高项目的性能。

  就是在连接池初始化的时候存入一定数量的连接,用的时候通过方法获取,不用的时候归还连接

  所有的链接池必须实现一个接口 javax.sql.DataSource接口

  获取连接的方法:

  Connection getConnection()

  归还连接的方法就是以前释放资源的方法

自定义一个连接池(理解思想)

常用连接池:

  DBCP

  C3P0      

///////////////

增强方法

  1.继承

  2.装饰者模式(静态代理)

  3.动态代理

///////////////////////////

装饰者模式:

  使用步骤:

    1.装饰者和被装饰者要实现同一个接口或者继承同一个类

    2.装饰者中要有被装饰者的引用

    3.对需要增强的方法进行加强

    4.对不需要加强的方法调用原方法

///////////////////
常见连接池:
dbcp:
c3p0:★
配置文件:
名称:c3p0.properties或者 c3p0-config.xml
位置:src下
使用:
new ComboPooledDataSource()
////////////////
dbutils:
工具类,封装了jdbc的操作.
使用步骤:
1.导入jar包
2.创建queryrunner类
3.编写sql
4.执行sql
queryrunner:操作sql语句
构造器:
new queryrunner()
方法:
query(..)
update(..)
ResultSetHandler:封装结果集
BeanHandler
BeanListHandler
MapListHandler
ScalarHandler

使用jdbc完成curd操作的更多相关文章

  1. 通过jdbc完成单表的curd操作以及对JDBCUtils的封装

    概述:jdbc是oracle公司制定的一套规范(一套接口),驱动是jdbc的实现类,由数据库厂商提供.所以我们可以通过一套规范实现对不同的数据库操作(多态) jdbc的作用:连接数据库,发送sql语句 ...

  2. Mybatis学习第一天——Mybatis的安装配置以及基本CURD操作

    1.Mybatis下载 Mybatis是开源的持久层框架,能够度jdbc进行简单的封装,但其并不是完全的ORM(Object Relational Mapping,对象关系映射),无法脱离数据库进行适 ...

  3. MongoDB学习笔记~自己封装的Curd操作(按需更新的先决条件)

    回到目录 我们上一讲中介绍了大叔封装的Mongo仓储,其中介绍了几个不错的curd操作,而对于按需更新内部子对象,它是有条件的,即你的子对象不能为null,也就是说,我们在建立主对象时,应该为子对象赋 ...

  4. Laravel框架数据库CURD操作、连贯操作使用方法

    Laravel框架数据库CURD操作.连贯如何来操作了这个操作性是非常的方便简单了我们在这里来为各位介绍一篇相关的教程,具体的细节步骤如下文介绍.   Laravel是一套简洁.优雅的PHP Web开 ...

  5. php对xml文件进行CURD操作

    XML是一种数据存储.交换.表达的标准: - 存储:优势在于半结构化,可以自定义schema,相比关系型二维表,不用遵循第一范式(可以有嵌套关系): - 交换:可以通过schema实现异构数据集成: ...

  6. MongoDB的安装及CURD操作

    MongoDB的下载地址:http://www.mongodb.org/downloads MongoDB有32bit和64bit两个版本,32bit只能存放2GB数据.我们选择64bit版进行下载. ...

  7. LINQ-to-SQL那点事~利用反射在LINQ-to-SQL环境中实现Ado.net的CURD操作

    回到目录 对于linq to sql提供的CURD操作,给我们的感觉就是简单,容易使用,更加面向对象,不用拼SQL语句了,这些好处都表示在处理单条实体或者集合长度小的情况下,如果有一个1000条的集合 ...

  8. Laravel框架数据库CURD操作、连贯操作

    这篇文章主要介绍了Laravel框架数据库CURD操作.连贯操作.链式操作总结,本文包含大量数据库操作常用方法,需要的朋友可以参考下 一.Selects 检索表中的所有行 $users = DB::t ...

  9. 一个简单的ORM制作(CURD操作类)

    SQL执行类 CURD操作类 其他酱油类 此篇是为上篇文章填坑的,不知道上篇砸过来的砖头够不够,不够的话请大家继续砸. CURD操作类负责将用户提供的条件转换为SQL语句,并提供给IHelper执行, ...

随机推荐

  1. Oracle数据库导入、导出(远程、10g、11g)

    1  查看oracle的版本信息 (1)用客户端连接到数据库,执行select * from v$instance             查看version项 (2)select * from pr ...

  2. 组播基本概念、IGMP、IGMP监听学习笔记

    前言 一直对组播这个概念迷迷糊糊,特别是交换机处理组播的方式,非常想搞懂但是懒癌发作.这几天终于耐心地看了下有关组播的资料,大致了解了一下同一广播域内组播的相关知识.组播占了计算机网络的一大部分,特别 ...

  3. tcp/ip协议和http协议

    TCP/IP 是一类协议系统,它是用于网络通信的一套协议集合. 传统上来说 TCP/IP 被认为是一个四层协议:应用层(telnet, ftp, http, smtp, dns等),传输层(tcp, ...

  4. httpmodule VS2012 和 VS2013

    http://stackoverflow.com/questions/963545/httpmodule-not-running-with-visual-studio 如果将 httpmodule 配 ...

  5. 报错:在做往下拉选里面拼接数据的时候 3个下拉选显示一个值 原因 @scope(单例)或者没配默认单例

    解决 @scope(多例)  这是因为造成线程并发访问不安全

  6. Ubuntu下如何禁用IPv6

    Ubuntu下如何禁用IPv6 2013-10-16 11:32:02 分类: HADOOP      分布式下的hadoop/hbase运行总出问题,zookeeper连接总是出问题,怀疑可能是ip ...

  7. day11会话管理

    会话管理入门 2.1 生活中会话 我: 小张,你会跳小苹果码? 小张: 会,怎么了? 我: 公司年会上要表演节目,你教教我把 小张:没问题,一顿饭而已. 我: OK. ........ 在这次生活中的 ...

  8. 使用tomcat作为容器安装Jenkins

    安装前准备环境:jdk,maven,tomcat jdk 参考centos安装jdk:https://www.cnblogs.com/pipiyan/p/10491876.html maven 已有安 ...

  9. java接口中成员变量和方法的默认修饰符(转)

    Java的interface中,成员变量的默认修饰符为:public static final 所以我们在interface中定义成员变量的时候,可以 1:public static final St ...

  10. Unity手游引擎安全解析及实践

    近日,由Unity主办的"Unity技术开放日"在广州成功举办,网易移动安全技术专家卓辉作为特邀嘉宾同现场400名游戏开发者分享了网易在手游安全所积累的经验.当下,很多手游背后都存 ...