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

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. nfs配置注意点

    #ip与括号之间不能有空格,不加rw参数时挂载的目录是只读的 /eqp/export/ 10.10.30.0/24(rw,sync,no_root_squash) #更改目录所属的组和所属的用户(nf ...

  2. Python之路Day13--堡垒机

    一.前景介绍 到目前为止,很多公司对堡垒机依然不太感冒,其实是没有充分认识到堡垒机在IT管理中的重要作用的,很多人觉得,堡垒机就是跳板机,其实这个认识是不全面的,跳板功能只是堡垒机所具备的功能属性中的 ...

  3. Xamarin的不归路-生成安卓错误3

    错误提示: 解决方案:升级jdk到8即可. 2016年9月1日14:50

  4. “我爱背单词”beta版发布与使用说明

    我爱背单词BETA版本发布 第二轮迭代终于画上圆满句号,我们的“我爱背单词”beta版本已经发布. Beta版本说明 项目名称 我爱背单词 版本 Beta版 团队名称 北京航空航天大学计算机学院  拒 ...

  5. DAO实现查询

    package DB3; import java.sql.*; public class DB { private static String driver="com.microsoft.s ...

  6. redis配置文件英译汉

    # By default Redis asynchronously dumps the dataset on disk. This mode is # good enough in many appl ...

  7. USACO翻译:USACO 2013 NOV Silver三题

    USACO 2013 NOV SILVER 一.题目概览 中文题目名称 未有的奶牛 拥挤的奶牛 弹簧牛 英文题目名称 nocow crowded pogocow 可执行文件名 nocow crowde ...

  8. maven filter 乱码,MalformedByteSequenceException: Invalid byte 3 of 3-byte UTF-8 sequence.

    <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactI ...

  9. ENode通信层性能测试结果

    测试环境 两台笔记本网线直连,通过测速工具(jperf)测试,确定两台电脑之间的数据传输速度可以达到1Gbps,即千兆网卡的最大速度.两台电脑硬件配置如下: client服务器,CPU:Intel i ...

  10. 史上最牛js

    js的功能有多强大,能做到多极致?当然前提是能用,不要搞到需要超级计算器才能运行,那不算. 今天一朋友给我介绍了这个:http://bellard.org/jslinux/ 倒腾了半天后,我只能这么感 ...