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. POJ2553( 有向图缩点)

    The Bottom of a Graph Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 9779   Accepted:  ...

  2. unreal Script(US)一些注意事项

    转自:http://www.cnblogs.com/dongbo/archive/2012/07/10/2585311.html 1.如果计算量很大,考虑使用native Code来完成. 2.如果代 ...

  3. <正则吃饺子> :关于redis集群的测试demo

    redis集群的测试demo,来自网络,具体不详. 1.下载地址,如下:http://download.csdn.net/detail/u012543819/9729291 2.项目是java项目,结 ...

  4. Python3 编译中文字串报错解决方案

    问题: Python3.6.5 版本中,程序有中文,运行时出现以下error: SyntaxError: Non-UTF-8 code starting with '\xb2' in file XXX ...

  5. Automake使用说明

    说明 从零开始编写automake工程非常复杂也没有必要,我们只要能看懂开源项目的automake即可,然后根据自己实际情况进行修改即可,下面给出两个比较好的参考项目,其中spice-gtk涵盖了使用 ...

  6. window.onerror 捕捉所有的前端error

    //[捕捉所有前端error] window.onerror = function (errormessage, url, line, column, error) { console.log(&qu ...

  7. jQuery EasyUI/TopJUI输入框事件监听

    jQuery EasyUI/TopJUI输入框事件监听 代码如下: <div data-toggle="topjui-panel" title="" da ...

  8. 黑马学习AJAX jQuery发送异步请求 $.ajax() $.post() $.get()是在调用方法而不是定义方法

  9. 如何使用JAR文件重用JMeter代码并节省时间

    在开发测试时,通常需要在测试中编写代码.此代码可能很长,可能会在多个测试中重复,或者可能仅针对特定测试编写.此外,如果要求发生变化,则在测试中编写的代码可能必须更改或补充. 这可能需要很长时间并且容易 ...

  10. css布局全总结

    一  居 中 布 局 水平居中 1. 使用inline-block+text-align(1)原理.用法 原理:先将子框由块级元素改变为行内块元素,再通过设置行内块元素居中以达到水平居中. 用法:对子 ...