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. Poj_1011_Sticks(剪枝)

    一.Description 乔治拿来一组等长的木棒,将它们随机地砍断,使得每一节木棍的长度都不超过50个长度单位.然后他又想把这些木棍恢复到为裁截前的状态,但忘记了初始时有多少木棒以及木棒的初始长度. ...

  2. 一行代码解决IE6/7/8/9/10兼容问题

    百度源代码如下 <!Doctype html><html xmlns=http://www.w3.org/1999/xhtml xmlns:bd=http://www.baidu.c ...

  3. JavaScript高级程序设计学习笔记第五章--引用类型(函数部分)

    四.Function类型: 1.函数定义的方法: 函数声明:function sum (num1, num2) {return num1 + num2;} 函数表达式:var sum = functi ...

  4. php file_get_contents超时处理

    因为要用php去向我的虚拟主机管理系统发送开通空间等的请求,需要Post传值,由于开通空间过程很慢,同时需要延时处理.以下找到了一下file_get_contents的超时处理,网上有人用2个方法解决 ...

  5. 【242】◀▶IEW-Unit07

    Unit 7 Education: Schools I.句子基本结构在写作中的运用 主谓宾 主系表 主谓 主谓宾宾 主谓宾补 1.主语: 1)位于句首 2)名词 例句:应该建立相关法律 Laws an ...

  6. Crypto Challenge Set 1解题报告

    1.Convert hex to base64 题意:给出一个hex编码过的字符串,将它进行base64加密 解题关键:直接利用base64库函数实现 import base64 str1=" ...

  7. JAVA企业级开发-BOM&DOM(03)

    一.BOM对象介绍 BOM对象:Browser Object Model 浏览器对象模型.把整个浏览器当做一个对象来处理. 一个浏览器对象中又包含了其他的对象. 重点介绍:window.history ...

  8. React 从入门到进阶之路(五)

    之前的文章我们介绍了  React 事件,方法, React定义方法的几种方式 获取数据 改变数据 执行方法传值.接下来我们将介绍 React 表单事件 键盘事件 事件对象以及 React中 的 re ...

  9. Unity5.5 Lighting Scene

    参考:https://docs.unity3d.com/Manual/GlobalIllumination.html Environment Lighting(环境光) Skybox: 天空盒材质,这 ...

  10. python之格式化字符串( format )

    用法: 它通过 { } 和 : 来代替传统 % 方式 1.使用位置参数 要点:从以下例子可以看出位置参数不受顺序约束,且可以为 { }, 只要 format 里有相对应的参数值即可,参数索引从0开,传 ...