JDBC常用API小结
建立数据库链接的三种方式:
- package com.victor_01;
- import java.sql.Connection;
- import java.sql.Driver;
- import java.sql.DriverManager;
- import java.sql.SQLException;
- import java.util.Properties;
- import org.junit.Test;
- public class Test1 {
- private String url = "jdbc:mysql://192.168.244.144:3306/test";
- private String user = "root";
- private String password = "123456";
- @Test
- public void test1() throws Exception {
- Driver driver = new com.mysql.jdbc.Driver();
- Properties prop = new Properties();
- prop.setProperty("user", user);
- prop.setProperty("password", password);
- Connection conn = driver.connect(url, prop);
- System.out.println(conn);
- }
- @Test
- public void test2() throws SQLException{
- Driver driver = new com.mysql.jdbc.Driver();
- DriverManager.registerDriver(driver);
- Connection conn = DriverManager.getConnection(url, user, password);
- System.out.println(conn);
- }
- @Test
- public void test3() throws Exception {
- Class.forName("com.mysql.jdbc.Driver");
- Connection conn = DriverManager.getConnection(url, user, password);
- System.out.println(conn);
- }
- }
推荐使用第三种,其实第二种和第三种本质上是一种,后者是前者的优化版。
JDBC接口核心的API
- JDBC接口核心的API
- java.sql.* 和 javax.sql.*
- |- Driver接口: 表示java驱动程序接口。所有的具体的数据库厂商要来实现此接口。
- |- connect(url, properties): 连接数据库的方法。
- url: 连接数据库的URL
- URL语法: jdbc协议:数据库子协议://主机:端口/数据库
- user: 数据库的用户名
- password: 数据库用户密码
- |- DriverManager类: 驱动管理器类,用于管理所有注册的驱动程序
- |-registerDriver(driver) : 注册驱动类对象
- |-Connection getConnection(url,user,password); 获取连接对象
- |- Connection接口: 表示java程序和数据库的连接对象。
- |- Statement createStatement() : 创建Statement对象
- |- PreparedStatement prepareStatement(String sql) 创建PreparedStatement对象
- |- CallableStatement prepareCall(String sql) 创建CallableStatement对象
- |- Statement接口: 用于执行静态的sql语句
- |- int executeUpdate(String sql) : 执行静态的更新sql语句(DDL,DML)
- |- ResultSet executeQuery(String sql) :执行的静态的查询sql语句(DQL)
- |-PreparedStatement接口:用于执行预编译sql语句
- |- int executeUpdate() : 执行预编译的更新sql语句(DDL,DML)
- |-ResultSet executeQuery() : 执行预编译的查询sql语句(DQL)
- |-CallableStatement接口:用于执行存储过程的sql语句(call xxx)
- |-ResultSet executeQuery() : 调用存储过程的方法
- |- ResultSet接口:用于封装查询出来的数据
- |- boolean next() : 将光标移动到下一行
- |-getXX() : 获取列的值
Statement接口
- package com.victor_01;
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.ResultSet;
- import java.sql.SQLException;
- import java.sql.Statement;
- import org.junit.Test;
- public class Demo2 {
- private String url = "jdbc:mysql://192.168.244.144:3306/test";
- private String user = "root";
- private String password = "123456";
- @Test
- public void Test1() {
- Connection conn = null;
- Statement stmt = null;
- ResultSet rs = null;
- try {
- Class.forName("com.mysql.jdbc.Driver");
- conn = DriverManager.getConnection(url, user, password);
- stmt = conn.createStatement();
- String sql = "drop table if exists jdbc_test";
- int result = stmt.executeUpdate(sql);
- System.out.println("Drop table:" + result);
- sql = "create table jdbc_test(id int,name varchar(10))";
- result = stmt.executeUpdate(sql);
- System.out.println("Create result:" + result);
- sql = "insert into jdbc_test values(1,'hello')";
- result = stmt.executeUpdate(sql);
- System.out.println("Insert result:" + result);
- int id = 2;
- String name = "world";
- sql = "insert into jdbc_test values(" + id + ",'" + name + "')";
- result = stmt.executeUpdate(sql);
- System.out.println("Insert result2:" + result);
- name = "java";
- sql = "update jdbc_test set name='" + name + "' where id=" + id
- + "";
- result = stmt.executeUpdate(sql);
- System.out.println("Update result:" + result);
- sql = "select * from jdbc_test";
- rs = stmt.executeQuery(sql);
- while (rs.next()) {
- System.out
- .println(rs.getInt("id") + " " + rs.getString("name"));
- }
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
- if (rs != null) {
- try {
- rs.close();
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
- if (stmt != null)
- try {
- stmt.close();
- } catch (SQLException e) {
- e.printStackTrace();
- }
- if (conn != null)
- try {
- conn.close();
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
- }
- }
PreparedStatement接口
- package com.victor_01;
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.PreparedStatement;
- import java.sql.ResultSet;
- import org.junit.Test;
- public class Demo3 {
- private String url="jdbc:mysql://192.168.244.144:3306/test";
- private String user="root";
- private String password="123456";
- @Test
- public void PreparedStatementTest() throws Exception{
- Class.forName("com.mysql.jdbc.Driver");
- Connection conn=DriverManager.getConnection(url, user, password);
- String sql="insert into jdbc_test(id,name) values(?,?)";
- PreparedStatement prestmt =conn.prepareStatement(sql);
- prestmt.setInt(1, 3);
- prestmt.setString(2,"tom");
- int result=prestmt.executeUpdate();
- System.out.println(result);
- sql="update jdbc_test set name=? where id=?";
- prestmt=conn.prepareStatement(sql);
- prestmt.setString(1, "steve");
- prestmt.setInt(2, 3);
- result=prestmt.executeUpdate();
- System.out.println(result);
- sql="select * from jdbc_test where id=?";
- prestmt=conn.prepareStatement(sql);
- prestmt.setInt(1, 3);
- ResultSet rs= prestmt.executeQuery();
- while(rs.next()){
- System.out.println("id="+rs.getInt(1)+";name="+rs.getString(2));
- }
- rs.close();
- prestmt.close();
- conn.close();
- }
- }
CallableStatement接口
- package com.victor_01;
- import java.sql.CallableStatement;
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.ResultSet;
- import java.sql.Statement;
- import org.junit.Test;
- public class Demo3 {
- private String url="jdbc:mysql://192.168.244.144:3306/test";
- private String user="root";
- private String password="123456";
- @Test
- public void PreparedStatementTest() throws Exception{
- Class.forName("com.mysql.jdbc.Driver");
- Connection conn=DriverManager.getConnection(url, user, password);
- String sql="drop procedure findById";
- Statement stmt=conn.createStatement();
- int result=stmt.executeUpdate(sql);
- System.out.println("drop result:="+result);
- sql=" CREATE PROCEDURE findById(IN sid INT) BEGIN select * from jdbc_test where id=sid; end";
- stmt=conn.createStatement();
- result=stmt.executeUpdate(sql);
- System.out.println("create result:="+result);
- //直接调用存储过程
- sql="call findById(2)";
- CallableStatement stmt1=conn.prepareCall(sql);
- ResultSet rs=stmt1.executeQuery();
- while(rs.next()){
- System.out.println("id="+rs.getInt(1)+",name="+rs.getString(2));
- }
- //传参调用存储过程
- sql="call findById(?)";
- stmt1=conn.prepareCall(sql);
- stmt1.setInt(1, 4);
- rs=stmt1.executeQuery();
- while(rs.next()){
- System.out.println("id="+rs.getInt(1)+",name="+rs.getString(2));
- }
- //带有输出参数的存储过程
- sql="drop procedure findById1";
- stmt=conn.createStatement();
- result=stmt.executeUpdate(sql);
- System.out.println("drop findById1 result:"+result);
- sql=" CREATE PROCEDURE findById1(IN sid INT,OUT sname VARCHAR(10)) BEGIN select name into sname from jdbc_test where id=sid; end";
- stmt=conn.createStatement();
- result=stmt.executeUpdate(sql);
- System.out.println("create result:="+result);
- sql="call findById1(?,?)";
- stmt1=conn.prepareCall(sql);
- stmt1.setInt(1, 4);
- stmt1.registerOutParameter(2, java.sql.Types.VARCHAR);
- stmt1.executeQuery(); //注意:结果不是返回到ResultSet中,而是返回到输出参数中。
- String sname=stmt1.getString(2);
- System.out.println(sname);
- rs.close();
- stmt1.close();
- stmt.close();
- conn.close();
- }
- }
JDBC常用API小结的更多相关文章
- jquery 常用api 小结2
*一)jQuery常用方法API实战 (1)DOM简述与分类 A)DOM是一种标准,它独立于平台,语言,浏览器. B)如果项目中,你完全按照DOM标准写代码,你就能在各大主流的浏览器中操作标准控件. ...
- java数据库 JDBC操作MySQL数据库常用API 部门表和员工表 创建表 添加数据 查询数据
package com.swift.department; import java.sql.Connection; import java.sql.PreparedStatement; import ...
- Java中数据库连接池原理机制的详细讲解以及项目连接数据库采用JDBC常用的几种连接方式
连接池的基本工作原理 1.基本概念及原理 由上面的分析可以看出,问题的根源就在于对数据库连接资源的低效管理.我们知道,对于共享资源,有一个很著名的设计模式:资源池(Resource Pool).该模式 ...
- Unit02: JDBC核心API
Unit02: JDBC核心API db.properties 注意:如果使用连接池,可以在这个文件中增加对连接池的相关设置: 连接池参数,常用参数有: 初始连接数 最大连接数 最小连接数 每次增加的 ...
- JDBC 学习笔记(三)—— JDBC 常用接口和类,JDBC 编程步骤
1. JDBC 常用接口和类 DriverManager 负责管理 JDBC 驱动的服务类,程序中主要的功能是获取连接数据库的 Connection 对象. Connection 代表一个数据库连接对 ...
- Servlet 常用API学习(一)
Servlet常用API学习 一.Servlet体系结构(图片来自百度图片) 二.ServletConfig接口 Servlet在有些情况下可能需要访问Servlet容器或借助Servlet容器访问外 ...
- JDBC主要API学习总结
JDBC主要API学习 一.JDBC主要API简介 JDBC API 是一系列的接口,它使得应用程序能够进行数据库联接,执行SQL语句,并且得到返回结果. 二.Driver 接口 Java.sql.D ...
- Hibernate常用api以及增删改查
一 .API的定义 所谓的API全称就是(Application Programming Interface,应用程序编程接口).就是类库对外提供的接口.类.枚举.注解等元素. 如:JDK API ...
- java:Hibernate框架1(环境搭建,Hibernate.cfg.xml中属性含义,Hibernate常用API对象,HibernteUitl,对象生命周期图,数据对象的三种状态,增删查改)
1.环境搭建: 三个准备+7个步骤 准备1:新建项目并添加hibernate依赖的jar文件 准备2:在classpath下(src目录下)新建hibernate的配置文件:hibernate.cf ...
随机推荐
- 在RNN中使用Dropout
dropout在前向神经网络中效果很好,但是不能直接用于RNN,因为RNN中的循环会放大噪声,扰乱它自己的学习.那么如何让它适用于RNN,就是只将它应用于一些特定的RNN连接上. LSTM的长期记 ...
- Android屏幕适配笔记
1.限定符 为了适配不同屏幕大小的android手机或android平板,有时候就需要利用限定符来为不同的屏幕设定不同的布局文件,在一般情况下我们都是在layout文件夹下为某个活动准备一个默认的布局 ...
- BOM对象有哪些:
BOM对象有哪些: 1.window对象 ,是JS的最顶层对象,其他的BOM对象都是window对象的属性: 2.document对象,文档对象: 3.location对象,浏览器当前URL信息: 4 ...
- 2016huasacm暑假集训训练五 G - 湫湫系列故事——减肥记I
题目链接:http://acm.hust.edu.cn/vjudge/contest/126708#problem/G 这是一个01背包的模板题 AC代码: #include<stdio.h&g ...
- The Myths about Transactions (ACID) and NoSQL
There has been widespread characterization of one of the major distinctions between NoSQL and tradit ...
- python获取当前时间的用法
1.先导入库:import datetime 2.获取当前日期和时间:now_time = datetime.datetime.now() 3.格式化成我们想要的日期:strftime() 比如:“2 ...
- TCP/IP, WebSocket 和 MQTT
按照OSI网络分层模型,IP是网络层协议,TCP是传输层协议,而HTTP和MQTT是应用层的协议.在这三者之间, TCP是HTTP和MQTT底层的协议.大家对HTTP很熟悉,这里简要介绍下MQTT.M ...
- .NET 4.5.1 预览版新特性
上个月的微软Build大会上宣布了.NET 4.5.1的推出,Heydarian的这个演讲题为".NET开发中的新内容",涵盖了.NET Framework中一些重要的新特性. H ...
- ASP.Net请求处理机制初步探索之旅 - Part 4 WebForm页面生命周期
开篇:上一篇我们了解了所谓的请求处理管道,在众多的事件中微软开放了19个重要的事件给我们,我们可以注入一些自定义的业务逻辑实现应用的个性化设计.本篇,我们来看看WebForm模式下的页面生命周期. ( ...
- [nRF51822] 7、基础实验代码解析大全(前十)
实验01 - GPIO输出控制LED 引脚输出配置:nrf_gpio_cfg_output(LED_1); 引脚输出置高:nrf_gpio_pin_set(LED_1); 引脚电平转换:nrf_gpi ...