java基础(11) -JDBC

jdbc

1.装载驱动

载入跟数据库建立连接的驱动

/*
sql server:
    String className ="com.microsoft.sqlserver.jdbc.SQLServerDriver";
mysql:
    String className = "com.mysql.jdbc.Driver";
*/
Class.forName(className);

2.获取连接

获取数据库服务器的一个开放连接集

/*
sql server:
    jdbcUrl = "jdbc:sqlserver://localhost:1433;DatabaseName=jdbc_research";
mysql:
    jdbcUrl = "jdbc:mysql://localhost:3306/jdbc_research?useUnicode=true&characterEncoding=UTF-8";
*/
Connection c = DriverManager.getConnection(jdbcUrl,username,password);

3.执行SQL & 获取结果

Statement--用于执行不带参数的简单SQL建立了到特定数据库的连接之后,就可用该连接发送 SQL 语句

Statement stm = c.createStatement();
//创建语句
stm.execute("CREATE table jdbc_test(name CHAR(20))");
//增 删 改 查
stm.executeUpdate("INSERT INTO jdbc_test VALUES('TEST')");
stm.executeUpdate("DELETE jdbc_test");
stm.executeUpdate("UPDATE jdbc_test SET name='change' WHERE name = 'TEST'");
ResultSet rs =stm.executeQuery("SELECT * FROM jdbc_test");
if(rs.next())
    System.out.println(rs.getString(1));//结果集从1开始

PreparedStatement--对象用于执行带或不带IN参数的预编译 SQL 语句

PreparedStatement的第一次执行消耗是很高的. 它的性能体现在后面的重复执行.

//适合于带参数多次执行的数据库操作
PreparedStatement  stm = c.prepareStatement("INSERT INTO jdbc_test VALUES(?)");
for (int i = 0; i < 10; i++) {
    //参数索引从1开始
    stm.setString(1,"test" + i);
    stm.executeUpdate();
}

//批处理
PreparedStatement  stm = c.prepareStatement("INSERT INTO jdbc_test VALUES(?)");
for (int i = 0; i < 10; i++) {
    //参数索引从1开始
    stm.setString(1,"Batch" + i);
    stm.addBatch();
}
stm.executeBatch();

CallableStatement--对象用于执行对数据库已存在的存储过程的调用

java调用

//参数索引从1开始
String procedure = "{ call get_name_by_id(?,?,?) }";
//设置调用的存储过程
CallableStatement stm = c.prepareCall(procedure);
//注册输入参数的类型
stm.setInt(1, 2);
//注册输出的参数
stm.registerOutParameter(2, java.sql.Types.CHAR);
stm.registerOutParameter(3, java.sql.Types.INTEGER);
stm.execute(); 

//获取对应输出参数的值
String rs = stm.getString(2);
System.out.println("name:"+rs);
int rs2 = stm.getInt(3);
System.out.println("id:"+rs2);

SQL SERVER

CREATE table proc_test(name CHAR(20),id int,sex char(2));
INSERT INTO proc_test (name,id,sex) VALUES('test',1,'男');
INSERT INTO proc_test (name,id,sex) VALUES('test2',2,'女');
INSERT INTO proc_test (name,id,sex) VALUES('test3',3,'男');
INSERT INTO proc_test (name,id,sex) VALUES('test4',4,'女');

--CREATE
ALTER PROC get_name_by_id(@n INT,@rs CHAR(20) OUTPUT,@id INT OUTPUT)
AS
BEGIN
    SELECT @rs=name, @id=id FROM proc_test WHERE id = @n
END

--SQL调用
DECLARE @r CHAR(20)
DECLARE @id INT
EXEC get_name_by_id 2,@r OUTPUT ,@id OUTPUT
SELECT @r AS name ,@id AS id

4.关闭资源

查询完成后要把资源回收(关闭连接)

c.close();

java基础(11) -JDBC的更多相关文章

  1. 【Java基础】JDBC简明教程

    目录 1. 常用类 2. JDBC编程步骤 3. 事务处理 4. 数据库连接池 5. JDBC列子代码 6. 使用Apache的JDBC工具类 虽然在平时的开发过程中我们不会直接使JDBC的API来操 ...

  2. Java基础93 JDBC连接MySQL数据库

    本文知识点(目录): 1.什么是jdbc     2.jdbc接口的核心API     3.使用JDBC技术连接MySQL数据库的方法    4.使用Statement执行sql语句(DDL.DML. ...

  3. java基础之JDBC八:Druid连接池的使用

    基本使用代码: /** * Druid连接池及简单工具类的使用 */ public class Test{ public static void main(String[] args) { Conne ...

  4. java基础之JDBC二:原生代码基础应用

    JDBC的基础应用CURD: 增删改 public void noQuery() { Connection conn = null; Statement stat = null; try { //注册 ...

  5. java基础之JDBC一:概述及步骤详解

    1. JDBC的简介 概述: 就是Java用来操作不同数据库(DBMS)的类库(技术), 本质就是一些类和接口. /* 类: DriverManager 接口: Driver, Connection, ...

  6. 【java基础 11】java集合框架学习

    导读:本篇博客主要是从整体上了解java的集合框架,然后主要介绍几个自己在项目中用到的结构,比如说:hashtable.hashmap.hashset.arraylist等! 一.宏观预览 从宏观上看 ...

  7. java基础(11):接口、多态

    1. 接口 1.1 接口概念 接口是功能的集合,同样可看做是一种数据类型,是比抽象类更为抽象的”类”. 接口只描述所应该具备的方法,并没有具体实现,具体的实现由接口的实现类(相当于接口的子类)来完成. ...

  8. java基础(29):JDBC、DBUtils

    1. JDBC 1.1 JDBC概述 JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问 ...

  9. Java基础11 对象引用

    链接地址:http://www.cnblogs.com/vamei/archive/2013/04/01/2992484.html 作者:Vamei 出处:http://www.cnblogs.com ...

随机推荐

  1. 计算facebook sdk需要的key hashes

    1. 下载openssl,在C盘创建openssl文件夹,解压下载的zip到openssl文件夹. 2. 找到debug.keystore. windows下在C:\Users\用户名\.androi ...

  2. Mysql 忘记root密码后修改root密码

    1.修改my.cnf: 在mysqld进程配置文件中添加skip-grant-tables,添加完成后记住保存. 2.重新启动MYSQL数据库: service mysqld restart 2.修改 ...

  3. 网页web前端学习技巧

    1. 写js效果时一定要注意先分析好效果的行为,尽量用最简单通用性的代码.分析步骤可以是1.先把要实现的功能一步一步的写在纸上(即自然语言)2.再根据自然语言翻译成机器语言,用jquery写的代码一定 ...

  4. 【JAVAWEB学习笔记】05_jQuery基础

    晨读单词: toggle:切换 each:每个(遍历) append:追加(内部追加,将B追加到A的内部结尾处) appendTo:追加(内部追加,将A追加到B的内部结尾处) prepend:追加(内 ...

  5. Day3-递归函数、高阶函数、匿名函数

    一.递归函数 定义:函数内部可以调用其它函数,如果调用自身,就叫递归. 递归特性: 1.必须有结束条件退出: >>> def calc(n): ... print(n) ... re ...

  6. chroot jail

    注意,原标题是:Linux Virtualization using Chroot Jail,我实在不知道怎么翻译,所以,自作主张,选了chroot jail作为标题.原文地址 chroot jail ...

  7. Regular Expression Matching2015年6月24日

    题目: Implement regular expression matching with support for '.' and '*'. '.' Matches any single chara ...

  8. UICollection无法下拉刷新的问题

    当UICollectonView加载的内容不够多的时候会出现无法上下拉刷新的问题,折腾了半天,原来是有一个属性没有打开 设置 : self.collectionView.alwaysBounceVer ...

  9. Nginx教程(三) Nginx日志管理

    Nginx教程(三) Nginx日志管理 1 日志管理 1.1 Nginx日志描述 通过访问日志,你可以得到用户地域来源.跳转来源.使用终端.某个URL访问量等相关信息:通过错误日志,你可以得到系统某 ...

  10. 006开源O/R映射框架内容回顾

    Hibernate是一个O/R映射框架(也称为ORM) 从ORM词来看,O---Object(对象模型):R--- Relational(关联模型),可以做对象和关联的一种映射,当然这只是部分功能,一 ...