一、什么是JDBC
Java提出的一套用来连接数据库的标准(接口)。起到一种桥梁的作用。
1、JDBC的常用类
- Java使用jdbc编程,必须使用:来自
java.sql.*;
的类和接口 java.sql.Driver;
//所有数据库的驱动均实现该接口java.sql.DriverManage;
//驱动管理类java.sql.Connection;
//连接的接口java.sql.statment;
//会话的接口java.sql.,Result;
//结果集的接口
二、JDBC的使用步骤
1、加载驱动
Class.forName("包名", "类名");
2、获得链接
url(同一资源定位器):协议名://主机名:端口号:资源名
DriverManager.getConnection("url", username, password);
3、创建会话
1)Statement
Statement stm = con.createStatement();
2)PreparedStatement(预编译的Statement)
可以预防SQL注入。
PreparedStatement pstmt = con.prepareStatement(sql);//需要预先编译的sql语句
4、执行SQL,获取结果集
1)executeQuery(String sql)
执行SELECT
语句,它返回的是查询后得到记录集(resultset)。
2)executeUpdate(String sql)
执行UPDATE
,INSERT
,DELETE
语句,它返回的是语句执行后说影响到的记录条数(int)。对于 CREATE TABLE 或 DROP TABLE 等不操作行的DDL语句,executeUpdate 的返回值总为零。
ResultSet rs = stm.executeQuery(sql);
3)execute(String sql)
执行任何sql语句,也就是前两者之一。返回值是第一个结果的表现形式。当第一个执行结果是查询语句时,返回true,可以通过getResultSet方法获取结果;当第一个执行结果是更新语句或DDL语句时,返回false,可以通过getUpdateCount方法获取更新的记录数量。
4)executeBatch
批处理操作,在处理大量相同操作时可以明显提高效率。
con.setAutoCommit(false); // 关闭自动执行
stmt.addBatch("INSERT INTO employees VALUES (1000, 'Joe Jones')");
stmt.addBatch("INSERT INTO departments VALUES (260, 'Shoe')");
stmt.addBatch("INSERT INTO emp_dept VALUES (1000, 260)");
int[] updateCounts = stmt.executeBatch();// 提交一批要执行的更新命令
5、处理结果(例如:遍历)
while (rs.next()) {
int deeptno = rs.getInt(1);
String dname = rs.getString(2);
String loc = rs.getString(3);
System.out.println(deeptno + "\t" + dname + "\t" + loc);
}
6、关闭
注意:如果忘记关闭连接是很危险的,有可能卡死数据库。
finally {
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (stm != null) {
try {
stm.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (con != null) {
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
三、ProPerties容器
在java.util
包下面有一个类 Properties
,该类主要用于读取项目的配置文件(以.properties
结尾的文件和.xml
文件)。
Properties
有一个load()
方法,可以直接读取InputStrem
内的数据。将数据库的参数存放到Properties
容器中{参数以键值对的方式存在}。
//加载配置文件
roperties.load(DBUtil.class.getClassLoader().getResourceAsStream("DataBaseUtil.properties"));
//获取配置文件里的配置信息
datatype = properties.getProperty("datatype");
driver = properties.getProperty(datatype + "Driver");
url = properties.getProperty(datatype + "Url");
user = properties.getProperty(datatype + "User");
password = properties.getProperty(datatype + "Password");
DataBaseUtil.properties 的内容如下:
datatype=mysql
oracleDriver=oracle.jdbc.driver.OracleDriver
oracleUrl=jdbc:oracle:thin:@localhost:1521:xe
oracleUser=scott
oraclePassword=tiger
mysqlDriver=com.mysql.jdbc.Driver
mysqlUrl=jdbc:mysql://localhost:3306/bjsxt20151014
mysqlUser=root
mysqlPassword=123456
四、JDBC连接各种数据库的方式示例
1、Oracle
// 1 oracle数据库(thin模式)
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
String url = "jdbc:oracle:thin:@localhost:1521:orcl";// orcl为数据库的SID(实例)
String user = "scott";
String password = "tiger";
Connection conn = DriverManager.getConnection(url, user, password);
2、DB2
// 2 DB2数据库
Class.forName("com.ibm.db2.jdbc.app.DB2Driver").newInstance();
String url = "jdbc:db2://localhost:5000/sample";// sample为数据库名
String user = "admin";
String password = "";
Connection conn = DriverManager.getConnection(url, user, password);
3、SQL Server
// 3 Sql Server数据库
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
String url = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mydb";// mydb为数据库
String user = "sa";
String password = "";
Connection conn = DriverManager.getConnection(url, user, password);
4、Sybase
// 4 Sybase数据库
Class.forName("com.sybase.jdbc.SybDriver").newInstance();
String url = "jdbc:sybase:Tds:localhost:5007/myDB";// myDB为数据库名
Properties sysProps = System.getProperties();
sysProps.put("user", "userid");
sysProps.put("password", "user_password");
Connection conn = DriverManager.getConnection(url, sysProps);
5、Informix
// 5 Informix数据库
Class.forName("com.informix.jdbc.IfxDriver").newInstance();
String url = "jdbc:informix-sqli://123.45.67.89:1533/myDB:INFORMIXSERVER=myserver;user=testuser;password=testpassword";//myDB为数据库名
Connection conn = DriverManager.getConnection(url);
6、MySQl
// 6 MySQL数据库
Class.forName("com.mysql.jdbc.Driver").newInstance();//或者为
Class.forName("org.gjt.mm.mysql.Driver").newInstance();
tring url = "jdbc:mysql://localhost/myDB";// myDB为数据库名
String user = "root";
String password = "123456";
Connection conn = DriverManager.getConnection(url, user, password);
7、PostgreSQL
// 7 PostgreSQL数据库
Class.forName("org.postgresql.Driver").newInstance();
String url = "jdbc:postgresql://localhost/myDB";// myDB为数据库名
String user = "myuser";
String password = "mypassword";
Connection conn = DriverManager.getConnection(url, user, password);
8、SqlLite
// 8 SqlLite数据库
Class.forName("org.sqlite.JDBC");
String url = "jdbc:sqlite:SqlLite.db";// SqlLite.db为数据文件(*.db)的路径
Connection con = DriverManager.getConnection(url);