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. 【转】Pro Android学习笔记(二):开发环境:基础概念、连接真实设备、生命周期

    在Android学习笔记(二):安装环境中已经有相应的内容.看看何为新.这是在source网站上的Android架构图,和标准图没有区别,只是这张图颜色好看多了,录之.本笔记主要讲述Android开发 ...

  2. hihocoder1475 数组分拆【DP+前缀和优化】

    思路: DP[ i ] 代表以 i 结尾的方案数. dp[i] += sum[i] - sum[j - 1] != 0 ? dp[j] : 0 ; 对于100%的数据,满足1<=N<=10 ...

  3. 纯CSS,多个半圆以中心点旋转

    效果图: html代码: <div style=" background:#000; position: relative; width:300px; height:300px;&qu ...

  4. css中多余文字省略号显示

    项目中很多情况都要求多余的文字要以省略号的形式展示在前端页面上.虽然用的多,但是我也不知道为啥,我始终记不住.所以,通过这种方式,让自己加深一下印象 情况一:单行文字超出规定宽度后,以省略号形式展示 ...

  5. 用SqlDataAdapter与datagridview配合实现快速CRUD

    private void btnSave_Click(object sender, EventArgs e) { //把DataGridView的修改的数据保存到数据库中去. string connS ...

  6. Linux上传下载工具FileZilla(GNU软件) 文件传输和配置文件修改

  7. JPA @MappedSuperclass注解的使用说明(转)

    (2011-11-07 11:37:30) 转载▼ http://blog.sina.com.cn/s/blog_7085382f0100uk4p.html 标签: 杂谈   基于代码复用和模型分离的 ...

  8. C# Obsolete(已弃用方法属性)

    class Realization : Interface { /// <summary> /// 已弃用的方法,Obsolete第二个参数设置为true,调用此方法会产生警告并引起编译器 ...

  9. 程序员/开发人员的真实生活 (Gif 多图)

    往工作环境上传东西的时候: 没保存,就关了 IDE 的时候: 凌晨三点调代码的时候: 正则表达式返回了了预期结果的时候: 当老板告诉我,我那一直负责的模块失效了的时候: 刚修复了Bug,我给老板演示的 ...

  10. Codeforces Round #431 (Div. 2) B

    Connect the countless points with lines, till we reach the faraway yonder. There are n points on a c ...