`

java JDBC编程

阅读更多
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/deptid
		Connection 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 block
			e.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 block
			e.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 block
			e.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 block
			e.printStackTrace();
		} finally {
			// 4 关闭资源
			try {
				resultSet.close();
				statement.close();
				connection.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}

		}

	}

	
	public static void main(String[] args) {
		query();
	}

}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics