六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 23|回复: 0

java JDBC编程

[复制链接]

升级  12.67%

17

主题

17

主题

17

主题

秀才

Rank: 2

积分
69
 楼主| 发表于 2013-2-3 14:14:23 | 显示全部楼层 |阅读模式
1:JDBC
Java DataBase Connectivity(Java数据库连接技术)


2:JDBC设计的目的。

是一种接口的类组成。使用接口的特点,只定义规范,让不同的
数据库厂商实现。这样程序员不用关心如何连接各种数据库的底
层实现。

3:JDBC的组成结构

JDBC_API(SUN公司提供)

驱动管理器(用于连接API与驱动之间的连接关系)


数据库的驱动程序(数据库厂商提供)


4:JDBC的4种驱动的类型
A:JDBC_ODBC桥

B:本地API

C:网络协议驱动

D:本地协议驱动。

A/B:适合C/S架构

C/D:适合B/S架构。

效率:B>C>D>A


5:JDBC的连接过程:

前提:将数据库的驱动包拷到工程中。

A:加载驱动。

B:获取连接

C:构造SQL语句执行对象

D:发送SQL

E:关闭资源(关闭的先后问题)


6:Connection接口的方法:
close()
savePoint(name)
commit()
rollback()
rollback(SavePoint)
setAutoCommit();


createStatement();
prepareStatement(String sql)
prepareCall(String sql)

7:Statement
addBatch(String sql)
executeBatch
clearBatch()

close()

execute() //执行DDL,DML和Select语句。
true:表示执行的是SElect语句。
false:表示执行提DDL和insert/update/delete语句。

executeUpdate()  //执行DDL和DML语句。返回影响行数的结果。
executeQuery();//执行Select语句。

8:ResultSet
结果集:结果集与游标或者迭代器的机制一致。停在第一条记录的前面。

要用的话,必须Next一下。

9、例子
import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.ResultSetMetaData;import java.sql.SQLException;import java.sql.Statement;public class TestJDBC {public static void insertBatch() {// userid/username/spassword/deptidConnection connection = null;Statement statement = null;String driver = "oracle.jdbc.driver.OracleDriver";String url = "jdbc:oracle:thin:@127.0.0.1:1521:orcl";String user = "user";String password = "password";try {// 1 加载驱动程序Class.forName(driver);} catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();}try {// 2 建立数据库连接connection = DriverManager.getConnection(url, user, password);// 改变事务提交方式,以便手动控制事务connection.setAutoCommit(false);// 3 执行SQL语句statement = connection.createStatement();// 批量插入String sql = "insert into t_user values(seq_t_user.nextval,'oracle1105' || seq_t_user.currval,'666666',2)";statement.addBatch(sql);sql = "insert into t_user values(seq_t_user.nextval,'oracle1105' || seq_t_user.currval,'666666',2)";statement.addBatch(sql);sql = "insert into t_user values(seq_t_user.nextval,'oracle1105' || seq_t_user.currval,'666666',2)";statement.addBatch(sql);sql = "insert into t_user values(seq_t_user.nextval,'oracle1105' || seq_t_user.currval,'666666',2)";statement.addBatch(sql);sql = "insert into t_user values(seq_t_user.nextval,'oracle1105' || seq_t_user.currval,'666666',2)";statement.addBatch(sql);statement.executeBatch();// 手动提交connection.commit();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();} finally {// 4 关闭资源// try {// statement.close();// connection.close();// } catch (SQLException e) {// // TODO Auto-generated catch block// e.printStackTrace();// }}}public static void query() {Connection connection = null;Statement statement = null;ResultSet resultSet = null;String driver = "oracle.jdbc.driver.OracleDriver";String url = "jdbc:oracle:thin:@127.0.0.1:1521:orcl";String user = "user";String password = "password";String sql = "select * from t_user";try {// 1 加载驱动程序Class.forName(driver);} catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();}try {// 2 建立数据库连接connection = DriverManager.getConnection(url, user, password);// 3 执行SQL语句statement = connection.createStatement();// 4 接收查询结果resultSet = statement.executeQuery(sql);while (resultSet.next()) {// 1 字段顺序int userid = resultSet.getInt(1);String username = resultSet.getString("username");System.out.println("userid:" + userid + ",username:" + username);}ResultSetMetaData resultSetMetaData=resultSet.getMetaData();int count=resultSetMetaData.getColumnCount();System.out.println("列数:"+count);for (int i = 1; i <= count; i++) {System.out.println("列名:"+resultSetMetaData.getColumnName(i));System.out.print("类型:"+resultSetMetaData.getColumnTypeName(i));}} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();} finally {// 4 关闭资源try {resultSet.close();statement.close();connection.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}public static void main(String[] args) {query();}}
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表