一、数据库技术

JDBC

1、JDBC简介:

Java技术系列中,访问数据库的技术叫做JDBC,它提供了一系列的API,让Java语言编写的代码连接数据库,对数据库的数据进行添加、删除、修改和查询。

1)、JDBC相关的API,存放在java.sql包中:

       java.sql.Connection: 负责连接数据库

       java.sql. Statement: 负责执行数据库SQL语句

       java.sql.ResultSet: 负责存放查询结果

2)、数据库驱动程序:

       针对不同类型的数据库,JDBC机制中提供了“驱动程序”的概念。对于不同的数据库,程序只需要使用不同的驱动。

数据库连接方式:

A、数据库厂商驱动:

B、ODBC:

 

2、建立ODBC数据源:

ODBC使用前,需要配置ODBC的数据源,让ODBC知道连接的具体数据库。

配置ODBC数据源:

 

3、JDBC操作:

JDBC操作的4个步骤:

1)、通过JDBC连接到ODBC,并获取连接对象:

       import  java.sql.Connection;

       import  java.sql.DriverManager;

       …….

       Class.forName (“sun.jdbc.odbc.JdbcOdbcDriver”);

       Connection con = DriverManager.getConnection (“jdbc: odbc:DSSchool”);

2)、使用Statement接口运行SQL语句:

       import  java.sql.Statement;

       ……

       Statement stat = con.CreateStatement();

       stat.executeQuery(SQL语句);

       stat.executeUpdate(SQL语句);

3)、处理SQL语句运行结果:

4)、关闭数据库连接:

       stat.close ();

       con.close ();

 

4、使用PreparedStatementCallableStatement

5、事务:

       在银行转账时,要对数据库进行两个操作,即将一个账户的钱减少,将另一个账户的钱增多。但是由于操作的先后顺序,如果两个操作之间发生障碍,则会导致数据不一致。因此,需要设计一个事务,在两条语句都执行成功后,数据修改才会真正提交放入数据库,否则数据操作回滚。

例:

import  java.sql.Connection;

import  java.sql.DriverManager;

import  java.sql.Statement;

public class Transaction{

       public static void main(String[] args) throws Exception{

              Connection con = null;

              Try{

                     Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);

                     con = DriverManager.getConnection(“jdbc:odbc:DSStudent”);

                     Statement stat = con.createStatement();

                     Con.setAutoCommit(false);//设置为不要自动提交

                     String sql1 = “UPDATE1”;

                     String sql2 = “UPDATE2”;

                     stat.executeUpdate(sql1);

                     stat.executeUpdate(sql2);

                     con.commit();//提交以上操作

              } catch (Exception e){

                     Con.rollback();//回滚

              } finally{

                     con.close();

              }

       }

}

 

6、使用厂商驱动进行数据库连接:

1)、MS SQL Server

       Class.forName(“com.microsoft.jdbc.sqlserver.AQLServerDriver”);

       Connection con = DriverManager.getConnection(

       “jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=Student”,”sa”,”psw”);

2)、Oracle

       Class.forName(“oracle.jdbc.driver.OracleDriver”);

       Connection con = DriverManager.getConnection(

       “jdbc:oracle:thin:@localhost:1521:Student”,”username”,”password”);

3)、MySQL

       Class.forName(“com.mysql.jdbc.Driver”);

       Connection con = DriverManager.getConnection(

       “jdbc:mysql://localhost:3306/Student”,”username”,”password”);

 

7、使用连接池访问数据库:

       在实际应用开发中,使用JDBC直接访问数据库中的数据,每一次数据访问请求,都必须经历建立数据库连接、打开数据库、存取数据和关闭数据库连接等步骤,而连接数据库是一件既消耗资源又费时的工作,如果频繁发生,系统的性能必然急剧下降。数据库连接池是解决这个问题最常用的方法。

       连接池是创建和管理数据库连接的缓冲技术,由于不处理事务时,数据库连接会闲置,因此,将其很好地管理起来,让闲置的连接被其他需要的线程使用,可以提高系统性能。其工作原理是,当一个线程需要用JDBC对数据库操作时,它从池中请求一个连接。当这个线程使用完这个连接,将其返回到连接池中,这样就可以被其他想使用该连接的线程使用。

主要操作:

1)、服务器建立数据库连接池对象;

2)、按照事先指定的参数创建初始数量的数据库连接,放入池中;

3)、对于一个数据库访问请求,直接从从连接池中得到一个连接;

4)、存取数据;

5)、关闭数据库,释放所有数据库连接,放入池中。

访问连接池的过程:

1)、确定连接目的地WebLogic的位置:

       HashTable table = new HashTable();

       Table.put(Context.INITIAL_CONTEXT_FACTORY,

                     “logic.jndi.WLInitialContextFactory”);

       Table.put(Context.PROVIDER_URL,”t3://localhost:7001”);

2)、确定连接目的地的WebLogic数据源的JNDI名称:

       Context context = new InitialContext(table);

       Object obj = context.lookup(“SStudent”);

       ataSource ds =

             ataSource)PortableRemoteObject.narrow(obj,DataSource.class);

3)、根据DataSource对象获取连接,并访问数据库:

例:

import java.sql.Connection;

import java.sql.ResultSet;

import java.sql.Statement;

import java.util.Hashtable;

import java.naming.Context;

import java.naming.InitialContext;

import java.rmi.PorttableRemoteObject;

import java.sql.DataSource;

public TestPool{

       public static void main(String[] args){

              Hashtable table = new Hashtable();

              table.put(Context.INITIAL_CONTEXT_FACTORY,

                     ”weblogic.jndi.WLInitialContextFactory”);

              table.put(Context.PROVIDER_URL,”t3://localhost:7001”);

              Context context = new InitialContext(table);

              Object obj = context.lookup(“DSStudent”);

DataSource ds = (DataSource)PortableRemoteObject.narrow(obj,DataSource.clss);

              Connectioncon conn = ds.getConnection();

              Statement stat = conn.CreateStatement();

              ResultSet rs = stat.executeQuery(“SELECT stuname FROM T_Student”);

              while(rs.next()){

                     System.out.print(rs.getString(“stuname”));

              }

              rs.close();

              stat.close();

              conn.close();

       }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值