jsp怎样与access的数据库连接啊 |
<% String path=request.getRequestURI(); int end1=path.lastIndexOf('/'); path=path.substring(0,end1+1); String sDBDriver = "sun.jdbc.odbc.JdbcOdbcDriver"; String sConnStr = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ="+request.getRealPath(path+"jx0713.mdb"); //String sConnStr = "jdbc:odbc:stu"; Connection conn = null; ResultSet rs = null; try { Class.forName(sDBDriver); }catch(java.lang.ClassNotFoundException e) { System.err.println("faq(): " + e.getMessage()); } conn = DriverManager.getConnection(sConnStr,"",""); Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); String sql="select * from 完成情况表 order by 名称,月份"; rs=stmt.executeQuery(sql); %> |
JSP访问MS-SOL Server
1、JSP访问Access
(1)载入驱动程序类别:
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
(2)建立数据库连接,注:jspdata为用户自定义的ODBC数据源名称
Connection con = DriverManager.getConnection("jdbc:odbc:jspdata");
(3)建立Statenment对象
Statenment stmt = con.createStatenment(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_ONLY);
(4)建立ResultSet(结果集)对象,并执行SQL语句
ResultSet rs = stmt.executeQuery("select * from 表名");
2、JSP访问MS-SOL Server
String url = "jdbc:odbc:jsql"; 注:jspl为用户自定义的ODBC数据源名称
(1)载入驱动程序类别:
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
(2)建立数据库连接
Connection con = DriverManager.getConnection(url,"userName","pasword");
(3)建立Statenment对象
Statenment stmt = con.createStatenment(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_ONLY);
(4)建立ResultSet(结果集)对象,并执行SQL语句
String sql = "select * from 表名";
ResultSet rs = stmt.executeQuery(sql);
JSP通过JDBC与数据库连接
3.JSP通过JDBC与数据库连接
JDBC与具体的某种数据库连接,是直接通过JDBC API类库中的类来自动装载驱动程序的。此类库一般在java.sql包中,它包含了用于实现与数据库连接的其它功能的类,包括与数据库建立连接、传送查询和接受查询结果。
例子:与数据库建立连接发送SQL语句处理结果
connection cn=DriverManager.getConnection("jdbc:odbc:wombat","login","password");
Statement stmt=cn.createStatement();//发送SQL语句
ResultSet rs=stmt.executeQuery("select a,b,c from table1");
while(rs.next()){ int x=rs.getInt("a"); String s=rs.getString("b"); float f=rs.getFloat("c"); }//处理结果 |
3.1 JDBC的四个类
以下是四个类的详细介绍
3.1.1.DriverManager类
此类用于装载驱动程序,它所有的成员都是静态成员,所以在程序中无须对它进行实例化,直接通过类名就可以访问它。DriverManager类是JDBC的管理层,作用于用户和驱动程序间加载驱动程序
对于简单的应用程序,一般程序员需要在此类中直接使用的唯一方法是DriverManager.getConnection。正如名称所示,该方法将建立与数据库的连接。JDBC 允许用户调用 DriverManager 的方法getDriver、getDrivers 和registerDriver 及 Driver 的方法connect。但多数情况下,让 DriverManager类管理建立连接的细节为上策
通过调用方法?Class.forName。这将显式地加载驱动程序类。由于这与外部设置无关,因此推荐使用这种加载驱动程序的方法。
Class.forName(“sun.jdbc.odbc.jdbcOdbcDriver”) |
当调用Driver.Manager.getConnection()发出连连接请求时,DriverManager将检查每个驱动程序,看它是否可以建立连接。
Connection getConnection(String url,String user,String password) |
subprotocol:子协议指定连接何种数据库或用什么方式连接数据库
subname: 确立一个连接,可以是一个数据源名,也可以是指向一个网上数据库
如:以下是通常用驱动程序(JDBC-ODBC桥驱动程序),并连一个student数据源,用匿名登录的的示例:
Class.forName(“sun.jdbc.odbc.jdbcOdbcDriver”);//加载驱动程序
String url=”jdbc:odbc:student”;
Connection cn=DriverManager.getConnection(url,”anonymous”,””); |
GetConnection():返回一个连接类对象.若成功,此对象就指向此数据库的一个连接;否则,此对象将为空null
3.1.2.Connection类
connection类是指向同一个数据库的连接。作用:管理指向数据库的连接,如:向数据库发送查询和接收数据库的查询结果都是在它基础上的;完成同数据库的连接的所有任务之后关闭此连接
connection = DriverManager.getConnection ("jdbc:mysql//localhost/accounts?user=&password="); |
void close():关闭同数据库的连接并释放占有的JDBC资源
Boolean isClose():判断是否仍与数据库连接
3.1.3.Statement类
作用:Statement对象用于将SQL语句发送到数据库中。
创建Statement对象建立了到特定数据库的连接后,就可用该连接发送SQL语句。
1)createStatement创建。
Connection cn=DriverManager.getconnection(rul,”sunny”,””); statement stmt=cn.createStatement(); |
为了执行Statement对象,被发送到数据库的SQL语句将被作为参数提供给Statement的方法
2)使用Statement对象执行语句Statement接口提供了三种执行SQL语句的方法 :
executeQuery():用于产生单个结果集的语句,如:select语句
executeUpdate():用于执行insert、update或delete、语句等,返回值是一个整数,指示受影响的行数(即更新计数)
execute():用于执行返回多个结果集、多个更新计数或二者组合的语句,语句完成.语句在已执行且所有结果返回时,即认为已完成。
对于返回一个结果集的executeQuery()方法,在检索完ResultSet对象的所有行时该语句完成。 对于方法executeUpdate(),当它执行时语句即完成 在少数调用execute()的情况下,只有在检索所有结果集或它生成的更新计数之后语句才完成关闭Statement对象。Statement对象将由Java垃圾收集程序自动关闭。但我们最好显示地关闭它们,因为会立即释放数据管理系统资源,有助避免潜在内存问题。
ResultSet executeQuery(String sql):主要关闭方法.返回一个静态的sql查询结果
int executeUpdate(String sql):查询一行sql声明中insert、update、delete的数目或返回0
void close():关闭同数据库的连接和所占有的JDBC资源
3.1.4.ResultSet类(纪录集)
作用:装载查询结果,并可以通过它的不同方法提取出查询结果。
ResultSet包含符合SQL语句中条件的所有行,且它通过一套get方法(这些get方法可以访问当前行中的不同列)提供了对这些行中数据的访问。
ResultSet.next():将纪录指针移动到ResultSet纪录集的下一行,使之成为当前行。注:纪录集是一张二维表,其中有查询所返回的列标题及相应的值。
对于方法executeUpdate(),当它执行时语句即完成. 在少数调用execute()的情况下,只有在检索所有结果集或它生成的更新计数之后语句才完成.
3.2. 实例介绍
数据库连接的要素: IP地址端口号(端口号对某个数据库服务是基本固定的,除非特别设定)意味着对应的数据库的驱动程序选择数据库帐号、密码(是分配给数据库的)发出SQL语句(通过Statement对象发送)
下面将通过一个实例介绍在JSP中利用JavaBeans通过JDBC-ODBC Bridge访问Access客户信息数据库。
在本地数据库程序使用Microsoft的Access等数据库时,可以使用Sun公司开发的JDBC-ODBC桥,借用此技术JSP程序就可以访问带有ODBC驱动程序的数据库。这样既保留JDBC的优点,又可以使用Microsoft提供的ODBC数据源与Access连接。不管对方是何种数据库,只要有ODBC接口就可以直接使用JDBC-ODBC桥与数据库连接,而无需因为后端数据库的改变而改动相应的程序代码,实现了应用层与数据库层的完美分离。如果需要变后端数据库为MySQL,只需在ODBC数据源中安装MySQL的驱动程序之后,就可以直接使用MySQL数据库了。
1.首先建立一个Access数据库Customers.mdb,其中表Customers有字段id(自动增量型,并设为主关键字)、name(文本型,长度10)、address(文本型,长度30)、info(备注型)。
配置步骤: 在“开始”——“设置”——“控制面板”——“管理工具”——“数据源(ODBC)”——“系统DSN”——“添加”——“选择数据源驱动程序”——“完成” ——“ODBC安装填写数据源名,点击‘确定’”——“完成”即可。
2.在Control Panel(控制面板)的ODBC Datasource模块中加入System DSN,取名Customers,并指向Customers.mdb。
3. JDBC-ODBC桥接器。
Class.forName ("sun.jdbc.odbc.JdbcOdbcDriver")
这里,Class是包java.lang中的一个类,该类通过调用它的静态方法forName就可以建立JDBC-ODBC桥接器。建立桥接器的时候可能发生异常,所以桥接器标准是 :
try{ Class.forName ("sun.jdbc.odbc.JdbcOdbcDriver") ; } catch (ClassNotFoundException e) {} |
4 .创建一个JavaBeans,命名为DBconn.java,并保存在支持JSP的Web服务器的缺省文档根目录下。
DBconn.java主要是封装与数据库的连接操作,内容如下:
import java.sql.*; public class DBconn { String DBDriver = "sun.jdbc.odbc.JdbcOdbcDriver"; String ConnStr = "jdbc:odbc:Customers"; Connection conn = null; ResultSet rs = null; public DBconn { try { Class.forName(DBDriver); //加载数据库驱动程序 } catch(java.lang.ClassNotFoundException e) { System.err.println("DBconn (): " + e.getMessage()); } } public ResultSet executeQuery(String sql) { rs = null; try { conn = DriverManager.getConnection(ConnStr); //与DBMS建立连接 Statement stmt = conn.createStatement(); rs = stmt.executeQuery(sql); } catch(SQLException ex) { System.err.println("aq.executeQuery: " + ex.getMessage()); } return rs; } }
|
5.DBconn.java编辑好后,在DOS状态下,进而用JDK的javac命令编译DBconn.java形成相应的class文件。
6.建立Customers.jsp文件,在JSP中调用以上编译好的JavaBeans,其内容如下:
〈html〉 〈head〉 〈meta http-equiv="Content-Type" content="text/html; charset=gb2312"〉 〈title〉客户信息调查〈/title〉 〈/head〉 〈body〉 〈p〉〈b〉客户信息调查〈/b〉〈/p〉 〈%@ page language="java" import="java.sql.*" %〉 〈jsp:useBean id="DBconn1" scope="page" class="DBconn" /〉 〈% ResultSet RS = DBconn1.executeQuery("SELECT * FROM Customers"); while (RS.next()) { out.print("〈LI〉" + RS.getString("name") + "〈/LI〉"); out.print("〈LI〉" + RS.getString("address") + "〈/LI〉"); out.print("〈LI〉" + RS.getString("info") + "〈/LI〉"); } RS.close(); %〉 〈/body〉 〈/html〉 |
在〈 jsp:useBean〉标记内定义了几个属性,其中id是整个JSP页面内该Bean的标识、scope属性定义了该Bean的生存时间、class属性说明了该Bean的类文件。