JDBC访问数据库(内含详解与步骤)

JDBC(Java DataBase Connectivity)


1、基础知识

1)规范(标准):SUN制定的JAVA应用程序连接数据库的规范(标准)。

2)类和接口的集合。

3)作用:连接到一个数据库并对数据库进行查询、更新。
JDBC访问数据库(内含详解与步骤)_第1张图片

2、JDBC设计

1)JDBC结构:Java程序,JDBC管理器,驱动程序,数据库四部分

    使用JDBC/ODBC桥来利用ODBC的接口访问数据库
    通过直接的JDBC驱动程序来实现数据库的访问

2)JDBC的典型用法
基于传统C/S模式的数据库访问
JDBC访问数据库(内含详解与步骤)_第2张图片

3)三层应用模式
JDBC访问数据库(内含详解与步骤)_第3张图片

3、 Java中JDBC的使用

用于JDBC编程的类都包含在java.sql 包 中

- DriverManager驱动程序管理类:

用来装载驱动程序,管理各种不同的数据库驱动程序,并且为创建新的数据库联接提供支持。

 public static synchronize Connection getConnection(String url,String user,String password)

url形式为:

 jdbc::

数据库的位置:数据库所在的主机,所使用的端口

  Oracle:1521;
  MicroSoft SQL Server:1433;
  MySQL:3306。

数据库的信息:数据库的名字。

 jdbc:mysql://localhost:3306/bookstore

用于建立一个到达指定数据库的连接,返回一个Connection对象。

- Connection类

代表应用程序到数据库的一个连接,完成对某一指定数据库的联接

statement creatStatement()

用于建立一个语句对象,以便执行没有参数的SQL查询和更新。

void close();

用于关闭当前的连接

- Statement类

用来执行查询和更新操作

1)ResultSet executeQuery(String sql)

执行SQL语句,返回结果为ResultSet对象

2)boolean execute(String sql)

执行sql语句,若结果为ResultSet则返回true,否则返回false。可使用getResultSet方法或getUpdateCount方法运行结果

3)ResultSet getResultSet()

返回目前的ResultSet

4)int executeUpdate(String sql)

执行SQL语句Insert,Update,Delete,返回行数或0,另外它也可以执行DDL(Data Definition Lanbuage)语言。

5)void close()

释放Statement所连接的数据库和JDBC资源。

- ResultSet类

执行查询后返回的结果集

1)xxx getxxx(int columnindex)

xxx getxxx(String columnName)

xxx表示一个类型:int、double、String、data

2)boolean next()

返回下一记录,没有时返回false

3)void close()
释放ResultSet资源
JDBC访问数据库(内含详解与步骤)_第4张图片

4、主要过程实现

1) 建立JDBC-ODBC桥接器

调用Class类中的静态方法forName()
如果无法找到指定的驱动程序类名,forName()方法会抛出
ClassNotFoundException的异常。

使用Class.forName(“驱动程序名字”)显式加载驱动程序。
例如:

 Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);
 MySQL: com.mysql.jdbc.Driver
 Oracle: oracle.jdbc.drive.OracleDriver
 SQL Server: com.microsoft.jdbc.sqlserver.SQLServerDriver

2 )连接到数据库
- 指定数据库连接的url,数据源的位置
- 使用DriverManager.getConnection(url);

例如:

String url=“jdbc:odbc:datasource”;
Connection conn=DriverManager.getConnection(url);

或者:

Connection conn=DriverManager.getConnection(String url , String   user , String  password)

eg:

Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/bookstore","root","root");

3)向数据库发送SQL语句

try{
    Statement sql = con.createStatement();
}catch(SQLException e){
    ...
}

4)处理查询结果
SQL语句对数据库的查询操作将返回一个ResultSet对象

 ResultSet rs = sql.executeQuery("SQL语句")

ResultSet对象一次只能看到一个数据行,若想显示所有的数据行,可用next()实现:

 while(rs.next()){

 }

5、通过JDBC访问数据库的基本流程

1)基本流程
- 建立ODBC数源(可选)
- 装入JDBC驱动程序
- 建立连接
- 执行SQL语句
- 检索结果
- 关闭连接
2)关闭相关对象
结果集对象、语句对象、连接对象
rs.close();
stmt.close();
con.close();

JDBC访问数据库(内含详解与步骤)_第5张图片

6、PreparedStatement类

  • Statement对象在每次执行sql语句时都将语句传给数据库,在多次执行同一个语句时,效率比较低。而prepared语句在它被应用程序调用之前就被送到数据库进行解释。这种方法的好处在于当程序包含了相同的SQL语句时,可以提高程序的执行效率。
  • 当需要在同一个数据库表中完成一组记录的更新时,可以使用PreparedStatement类,比如:如果需要一次更新多条顾客的购物金额记录时。
  • PreparedStatement对象的sql语句可以接受参数,每次执行时可以传递不同的参数.
  • PreparedStatement提供了setXXX()方法
    setString( )、setFloat( ) 、setInt( )
    1)创建
String sql=“select * from customer where age=?”
PreparedStatement pstmt=conn.prepareStatement(sql);

2)执行

pstmt.setInt(1,30);
ResultSet=pstmt.executeQuery();

3)关闭

pstmt.close();

你可能感兴趣的:(数据库)