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. 利用MEF实现插件机制(可根据输入类型来加载特定dll)

    最近在做PACS的项目中想利用插件来加载各个不同的SCP的操作实现.比如Worklist的查询数据库,可以有多个实现. 比如MPPS的更新,也可以有多个实现. 为了统一弹性处理插件模块,增加了类型输入 ...

  2. Java面试知识点总结(1)

    1.Java中的原始数据类型都有哪些,它们的大小及对应的封装类是什么? 原始数据类型 大小(byte) 对应封装类型 boolean 1或4 Boolean byte 1 Byte short 2 S ...

  3. 选择排序(java)

    选择排序的思想是:内外两层循环,第一层循环从第一个数开始到倒数第一个数, 第二层循环从上一层的数开始, 与上一层循环的数比较,如果小于则交换位置. 代码如下: public class SelectS ...

  4. JIRA 破解文件研究(Win 7环境)

    最近再次回来研究 Win 7 下的 JIRA,按网上的很多方法去尝试,竟然无法正常安装! 经过几次的弯路尝试,终究还是成功了. 嗯,有必要总结一下: 发觉网上的很多破解方法都太老!不管是什么原因,在6 ...

  5. [poj2019]Cornfields(二维RMQ)

    题意:给你一个n*n的矩阵,让你从中圈定一个小矩阵,其大小为b*b,有q个询问,每次询问告诉你小矩阵的左上角,求小矩阵内的最大值和最小值的差. 解题关键:二维st表模板题. 预处理复杂度:$O({n^ ...

  6. MultiBinding的StringFormat参数问题

    在wpf的绑定中,我们会用到多值绑定,如下: <MultiBinding Mode="OneWay" StringFormat="{3}({0}/{1}):{2}& ...

  7. Windows下搭建Subversion&nbsp;服务器

    一.准备工作 1.获取 Subversion 服务器程序 到官方网站(http://subversion.tigris.org/)下载最新的服务器安装程序.目前最新的是1.5版本,具体下载地址在:ht ...

  8. POJ - 2533 Longest Ordered Subsequence与HDU - 1257 最少拦截系统 DP+贪心(最长上升子序列及最少序列个数)(LIS)

    Longest Ordered Subsequence A numeric sequence of ai is ordered if a1 < a2 < ... < aN. Let ...

  9. C++11之lambda表达式解析

    什么是Lanmbda? 简短函数,就地书写.常用于向函数(算法)传递函数参数. 语法 Lambda 表达式,[capture](paras)mutable->return type{statem ...

  10. shell初级-----构建基本脚本

    使用多个命令 如果想要多个命令同时运行,可以把它们放在一行,用分号隔开. date;who 创建shell脚本文件 创建shell脚本时,必须在文件第一行指定要使用的shell #!/bin/bash ...