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 ...
随机推荐
- 解决 adb.exe 停止工作小续
继adb 停止工作的问题之后,又碰见了adb 停止工作的问题. 在使用adb install app.apk 之后给出错误信息如下: * daemon not running. starting it ...
- python Django session/cookie
一, Cookie #cookie # def cook1(request): # print(request.COOKIES) # 查看cooke # # print(request.get_sig ...
- Hibernate4 实例
一.hibernate需要的配置文件 首先hibernate中有两种xml文件. .cfg,xml文件负责配置连接数据库的信息.指定映射类.指定hbm映射文件. .hbm.xml文件负责配置持久化类和 ...
- Intellij IDEA 常用快捷键
[常规] Ctrl+Shift + Enter,语句完成 "!",否定完成,输入表达式时按 "!"键 Ctrl+E,最近的文件 Ctrl+Shift+E,最近更 ...
- 华为oj 字符串最后一个单词的长度
<img alt="http://img.bbs.csdn.net/upload/201508/06/1438867109_670158.jpg" src="htt ...
- Android ANR 分析解决方法
一:什么是ANR ANR:Application Not Responding,即应用无响应 二:ANR的类型 ANR一般有三种类型: 1. KeyDispatchTimeout(5 seconds) ...
- CYQ.Data+EasyUI开发:几个相关的问题CheckBox、Tree、TreeGrid
前言: 话说到新的公司已经呆了三个星期了,从上班的第二天开始就一直在写项目文档和给开发人员培训,以至于我的QQ签名从"我不是来搞培训的“到最后直接换成”我是来搞培训的“. 虽然挂名开发经理, ...
- 论如何在手机端web前端实现自定义原生控件的样式
手机开发webapp的同学一定遇到过这样问题,如何为丑极了的手机元素应用自定义的样式.首先,要弄清楚为什么要定义手机原生控件的样式,就需要看看手机的那些原生框样式的丑陋摸样: android: ios ...
- Web高级征程:《大型网站技术架构》读书笔记系列
一.此书到底何方神圣? <大型网站技术架构:核心原理与案例分析>通过梳理大型网站技术发展历程,剖析大型网站技术架构模式,深入讲述大型互联网架构设计的核心原理,并通过一组典型网站技术架构设计 ...
- RTSP协议转换RTMP直播协议
RTSP协议转换RTMP直播协议 RTSP协议也是广泛使用的直播/点播流媒体协议,最近实现了一个RTSP协议转换RTMP直播协议的程序,为的是可以接收远端设备或服务器的多路RTSP直播数据,实时转换为 ...