建立数据库链接的三种方式:

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小结的更多相关文章

  1. jquery 常用api 小结2

    *一)jQuery常用方法API实战 (1)DOM简述与分类 A)DOM是一种标准,它独立于平台,语言,浏览器. B)如果项目中,你完全按照DOM标准写代码,你就能在各大主流的浏览器中操作标准控件. ...

  2. java数据库 JDBC操作MySQL数据库常用API 部门表和员工表 创建表 添加数据 查询数据

    package com.swift.department; import java.sql.Connection; import java.sql.PreparedStatement; import ...

  3. Java中数据库连接池原理机制的详细讲解以及项目连接数据库采用JDBC常用的几种连接方式

    连接池的基本工作原理 1.基本概念及原理 由上面的分析可以看出,问题的根源就在于对数据库连接资源的低效管理.我们知道,对于共享资源,有一个很著名的设计模式:资源池(Resource Pool).该模式 ...

  4. Unit02: JDBC核心API

    Unit02: JDBC核心API db.properties 注意:如果使用连接池,可以在这个文件中增加对连接池的相关设置: 连接池参数,常用参数有: 初始连接数 最大连接数 最小连接数 每次增加的 ...

  5. JDBC 学习笔记(三)—— JDBC 常用接口和类,JDBC 编程步骤

    1. JDBC 常用接口和类 DriverManager 负责管理 JDBC 驱动的服务类,程序中主要的功能是获取连接数据库的 Connection 对象. Connection 代表一个数据库连接对 ...

  6. Servlet 常用API学习(一)

    Servlet常用API学习 一.Servlet体系结构(图片来自百度图片) 二.ServletConfig接口 Servlet在有些情况下可能需要访问Servlet容器或借助Servlet容器访问外 ...

  7. JDBC主要API学习总结

    JDBC主要API学习 一.JDBC主要API简介 JDBC API 是一系列的接口,它使得应用程序能够进行数据库联接,执行SQL语句,并且得到返回结果. 二.Driver 接口 Java.sql.D ...

  8. Hibernate常用api以及增删改查

    一   .API的定义 所谓的API全称就是(Application Programming Interface,应用程序编程接口).就是类库对外提供的接口.类.枚举.注解等元素. 如:JDK API ...

  9. java:Hibernate框架1(环境搭建,Hibernate.cfg.xml中属性含义,Hibernate常用API对象,HibernteUitl,对象生命周期图,数据对象的三种状态,增删查改)

    1.环境搭建: 三个准备+7个步骤 准备1:新建项目并添加hibernate依赖的jar文件  准备2:在classpath下(src目录下)新建hibernate的配置文件:hibernate.cf ...

随机推荐

  1. 解决 adb.exe 停止工作小续

    继adb 停止工作的问题之后,又碰见了adb 停止工作的问题. 在使用adb install app.apk 之后给出错误信息如下: * daemon not running. starting it ...

  2. python Django session/cookie

    一, Cookie #cookie # def cook1(request): # print(request.COOKIES) # 查看cooke # # print(request.get_sig ...

  3. Hibernate4 实例

    一.hibernate需要的配置文件 首先hibernate中有两种xml文件. .cfg,xml文件负责配置连接数据库的信息.指定映射类.指定hbm映射文件. .hbm.xml文件负责配置持久化类和 ...

  4. Intellij IDEA 常用快捷键

    [常规] Ctrl+Shift + Enter,语句完成 "!",否定完成,输入表达式时按 "!"键 Ctrl+E,最近的文件 Ctrl+Shift+E,最近更 ...

  5. 华为oj 字符串最后一个单词的长度

    <img alt="http://img.bbs.csdn.net/upload/201508/06/1438867109_670158.jpg" src="htt ...

  6. Android ANR 分析解决方法

    一:什么是ANR ANR:Application Not Responding,即应用无响应 二:ANR的类型 ANR一般有三种类型: 1. KeyDispatchTimeout(5 seconds) ...

  7. CYQ.Data+EasyUI开发:几个相关的问题CheckBox、Tree、TreeGrid

    前言: 话说到新的公司已经呆了三个星期了,从上班的第二天开始就一直在写项目文档和给开发人员培训,以至于我的QQ签名从"我不是来搞培训的“到最后直接换成”我是来搞培训的“. 虽然挂名开发经理, ...

  8. 论如何在手机端web前端实现自定义原生控件的样式

    手机开发webapp的同学一定遇到过这样问题,如何为丑极了的手机元素应用自定义的样式.首先,要弄清楚为什么要定义手机原生控件的样式,就需要看看手机的那些原生框样式的丑陋摸样: android: ios ...

  9. Web高级征程:《大型网站技术架构》读书笔记系列

    一.此书到底何方神圣? <大型网站技术架构:核心原理与案例分析>通过梳理大型网站技术发展历程,剖析大型网站技术架构模式,深入讲述大型互联网架构设计的核心原理,并通过一组典型网站技术架构设计 ...

  10. RTSP协议转换RTMP直播协议

    RTSP协议转换RTMP直播协议 RTSP协议也是广泛使用的直播/点播流媒体协议,最近实现了一个RTSP协议转换RTMP直播协议的程序,为的是可以接收远端设备或服务器的多路RTSP直播数据,实时转换为 ...