JDBC连接数据库以及常用接口(mysql与oracle)
2017-08-14 10:32
771 查看
一、JDBC的常用接口:
Driver接口由数据库厂家提供,作为java开发人员,只需要使用Driver接口就可以了。在编程中要连接数据库,必须先装载特定厂商的数据库驱动程序,不同的数据库有不同的装载方法。如:
装载MySql驱动:Class.forName("com.mysql.jdbc.Driver");
装载Oracle驱动:Class.forName("oracle.jdbc.driver.OracleDriver");
2.Connection接口
Connection与特定数据库的连接(会话),在连接上下文中执行sql语句并返回结果。DriverManager.getConnection(url, user, password)方法建立在JDBC URL中定义的数据库Connection连接上。
连接MySql数据库:Connection conn = DriverManager.getConnection("jdbc:mysql://host:port/database", "user", "password");
连接Oracle数据库:Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@host:port:database", "user", "password");
连接SqlServer数据库:Connection conn = DriverManager.getConnection("jdbc:microsoft:sqlserver://host:port; DatabaseName=database",
"user", "password");
常用方法:
createStatement():创建向数据库发送sql的statement对象。
prepareStatement(sql) :创建向数据库发送预编译sql的PrepareSatement对象。
prepareCall(sql):创建执行存储过程的callableStatement对象。
setAutoCommit(boolean autoCommit):设置事务是否自动提交。
commit() :在链接上提交事务。
rollback() :在此链接上回滚事务。
3.Statement接口
用于执行静态SQL语句并返回它所生成结果的对象。
三种Statement类:
Statement:由createStatement创建,用于发送简单的SQL语句(不带参数)。
PreparedStatement :继承自Statement接口,由preparedStatement创建,用于发送含有一个或多个参数的SQL语句。PreparedStatement对象比Statement对象的效率更高,并且可以防止SQL注入,所以我们一般都使用PreparedStatement。
CallableStatement:继承自PreparedStatement接口,由方法prepareCall创建,用于调用存储过程。
常用Statement方法:
execute(String sql):运行语句,返回是否有结果集
executeQuery(String sql):运行select语句,返回ResultSet结果集。
executeUpdate(String sql):运行insert/update/delete操作,返回更新的行数。
addBatch(String sql) :把多条sql语句放到一个批处理中。
executeBatch():向数据库发送一批sql语句执行。
4.ResultSet接口
ResultSet提供检索不同类型字段的方法,常用的有:
getString(int index)、getString(String columnName):获得在数据库里是varchar、char等类型的数据对象。
getFloat(int index)、getFloat(String columnName):获得在数据库里是Float类型的数据对象。
getDate(int index)、getDate(String columnName):获得在数据库里是Date类型的数据。
getBoolean(int index)、getBoolean(String columnName):获得在数据库里是Boolean类型的数据。
getObject(int index)、getObject(String columnName):获取在数据库里任意类型的数据。
ResultSet还提供了对结果集进行滚动的方法:
next():移动到下一行
Previous():移动到前一行
absolute(int row):移动到指定行
beforeFirst():移动resultSet的最前面。
afterLast() :移动到resultSet的最后面。
使用后依次关闭对象及连接:ResultSet → Statement → Connection
注意:这里要区分好PrepareStatement与Statement
1、PreparedStatement是预编译的, Preparedstatement支持批处理,对于批量处理可以大大提高效率。
2、Statement每次执行sql语句,相关数据库都要执行sql语句的编译。对于只执行一次的SQL语句选择Statement是最好的。因为PreparedStatement对象的开销比Statement大,对于一次性操作并不会带来额外的好处。
结论 :如果SQL语句被多次执行选用PreparedStatement是最好的.PreparedStatement的第一次执行消耗是很高的. 它的性能体现在后面的重复执行.
4000
(二)oracle与mysql的Driver与URL(统一资源定位器)
一、oracle的Driver:
1、Class.forName("oracle.jdbc.OracleDriver");
2、oracle URL: jdbc:oracle:thin:@localhost:1521:数据库名
或者jdbc:oracle:thin:@127.0.0.1:1521:数据库名
其中thin:小型驱动,驱动方式
二、mysql的Driver:
1、Class.forName("com.mysql.jdbc.Driver");
2、mysql URL:jdbc:mysql://localhost:3306/数据库名称
(三)封装方法package com.sdga.bbs.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import com.mysql.jdbc.ResultSet;
public class DB {
public static Connection createConnection(){
Connection conn = null;
try {
Class.forName("com.mysql.jdbc.Driver");
conn= DriverManager.getConnection("jdbc:mysql://localhost/bbs2017","root","root");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return conn;
}
public static PreparedStatement prepare(Connection conn,String sql){
PreparedStatement ps=null;
try {
ps= conn.prepareStatement(sql);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return ps;
}
public static void close(Connection conn){
if(conn==null) return;
try {
conn.close();
conn=null;//设为null,垃圾回收器会直接回收,这样省内存
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void close(PreparedStatement stmt){
try {
stmt.close();
stmt=null;//设为null,垃圾回收器会直接回收,这样省内存
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void close(ResultSet rs){
try {
rs.close();
rs=null;//设为null,垃圾回收器会直接回收,这样省内存(虽然close之后,会自动设置为null,但是这样会更严谨)
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
(四)实例:
public class TestJDBC {
public static void main(String[] args) {
ResultSet rs = null;
Statement stmt = null;
Connection conn = null;
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
//new oracle.jdbc.driver.OracleDriver();
conn = DriverManager.getConnection("jdbc:oracle:thin:@192.168.0.1:1521:orcl", "scott", "tiger");
stmt = conn.createStatement();
rs = stmt.executeQuery("select * from dept");
while(rs.next()) {
System.out.println(rs.getString("deptno"));
System.out.println(rs.getInt("deptno"));
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
//异常输出到log4j
} finally {
try {
if(rs != null) {
//判断一下是否为null
rs.close();
rs = null;
}
if(stmt != null) {
stmt.close();
stmt = null;
}
if(conn != null) {
conn.close();
conn = null;
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
8
相关文章推荐
- jdbc的配置及jdbc连接常用数据库(mysql、sqlserver、Oracle)
- JDBC连接数据库详细指南(包含MySQL、SQL Server、Oracle三种数据库)
- jdbc连接数据库(mysql,sqlserver,oracle)
- 收藏:JDBC常用连接写法(包括MySQL、Oracle、Sybase、SQLServer、DB2)
- JDBC连接数据库的方法(mysql oracle)
- Java使用JDBC连接任意类型数据库(mysql oracle。。)
- JDBC常用连接写法(包括MySQL、Oracle、Sybase、SQLServer、DB2)
- Java使用JDBC连接随意类型数据库(mysql oracle。。)
- mysql 远程连接数据库的方法以及常用命令(转)
- JDBC常用连接写法(包括MySQL、Oracle、Sybase、SQLServer、DB2)
- JDBC常用连接写法(包括MySQL、Oracle、Sybase、SQLServer、DB2)
- 【SQL】JDBC之与数据库MySQL的连接以及增删改查等操作
- 【SQL】JDBC之与数据库MySQL的连接以及增删改查等操作
- mysql 远程连接数据库的方法以及常用命令(转)
- mysql/sqlserver/oracle安装以及设置远程连接数据库访问
- JDBC连接数据库mysql;http接口参数取数据库的值
- Java中数据库连接池原理机制的详细讲解以及项目连接数据库采用JDBC常用的几种连接方式
- JDBC 连接 Oracle/MySql 数据库 不定期 小栗子...
- 收藏:JDBC常用连接写法(包括MySQL、Oracle、Sybase、SQLServer、DB2)
- JDBC 连接 SQL Server / MySQL / Oracle 数据库资源配置