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

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. Ubuntu环境变量(.profile)加载顺序

    Ubuntu下启动的时候的的加载环境变量的过程大致为: /etc/enviroment /etc/profile   -->/etc/bash.bashrc   --> /etc/prof ...

  2. ajax的理解与工作流程

    一.什么是ajax ajax是一种异步通信技术.在ajax出现之前,客户端与服务端之间直接通信.引入ajax之后,客户端与服务端加了一个第三者--ajax.有了ajax之后,通过在后台与服务器进行少量 ...

  3. 浅谈数据库优化方案--表和SQL

    1.数据类型的选择 1.字段最好设置为非空.若字段为char(8),即便是NULL也会现有8个字符的空间. 2.尽量使用数字型字段,若只含数值信息的字段尽量不要设计为字符型,这会降低查询和连接的性能, ...

  4. USACO翻译:USACO 2012 FEB Silver三题

    USACO 2012 FEB SILVER 一.题目概览 中文题目名称 矩形草地 奶牛IDs 搬家 英文题目名称 planting cowids relocate 可执行文件名 planting co ...

  5. 谢欣伦 - OpenDev原创教程 - 服务端套接字类CxServerSocket

    这是一个精练的服务端套接字类,类名.函数名和变量名均采用匈牙利命名法.小写的x代表我的姓氏首字母(谢欣伦),个人习惯而已,如有雷同,纯属巧合. CxServerSocket的使用如下(以某个叫做CSo ...

  6. ie8 jquery parents() 获取多个的问题

    今天开发的时候碰到了一个奇怪的问题 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3 ...

  7. Android内存清理

    直接上图吧! 获取文件大小 ,清理文件工具类 public class DataCleanManager { public static String getTotalCacheSize(Contex ...

  8. Btree 索引

    Btree 索引 索引是帮助数据库高效获取数据的一种数据结构,通过提取句子主干,就可以得到索引的本质. m-way查找树 如果想了解Btree,需要首先了解m-way数据结构. m-way查找树是是一 ...

  9. .NET陷阱之六:从枚举值持久化带来大量空间消耗谈起

    好长时间没有写博文了,今天继续. 这次跟大家分享的内容起因于对一个枚举值列表的序列化,下面简化后的代码即能重现.为了明确起见,我显式指定了枚举的基础类型. // 定义一个枚举类型. public en ...

  10. [ASP.NET MVC 小牛之路]09 - Controller 和 Action (1)

    我们知道,在 MVC 中每个请求都会提交到 Controller 进行处理.Controller 是和请求密切相关的,它包含了对请求的逻辑处理,能对 Model 进行操作并选择 View 呈现给用户, ...