数据库基础操作

    在JSP技术中,对数据库的操作都是通过JDBC组件完成的。JDBC在java程序和数据库之间起到桥梁的作用。

一 JDBC的概念

1. JDBC(Java DataBase Connectivity)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问。它由一组用JAVA语言编写的类和接口组成。JDBC是一个“低级”接口,可以直接调用SQL命令,也可以在它之上建立高级接口和工具,提供对用户更友好的接口。

   

2. JDBC API支持数据库访问的两层模型和三层模型。

   

两层模型:客户程序<-->数据库;三层模型:客户程序<-->中间层<-->数据库。

中间层的好处是

  • 可以控制对公司数据的访问和可做的更新种类。
  • 用户可以利用高级API,由中间层负责把它转换为相应的低级调用


3.  JDBC的驱动程序有四种:JDBC-ODBC桥,本地API驱动,网络协议驱动,本地协议驱动。

二  JDBC API介绍

  • DriverManager类,负责加载不同驱动程序,根据不同请求,返回数据库连接(Connection).

a.  使用DriverManager.getConnection()建立与数据库的连接。

b.  包含一系列Driver类,Driver类有静态部分,它创建该类实例,通过调用DriverManager.registerDriver对自己进行注册,不需用户直接调用注册方法。

c.  通过Class.forName()方法显示加载驱动程序类如:Class.forName("acme.db.Driver");通过将驱动程序加

java.lang.System的jdbc.drivers属性中,这是一个DriverManager类加载的驱动程序类名的列表,冒号分隔,初始化DriverManager类时,搜索该属性,试图加载驱动程序。当加载Driver类并在DriverManger类注册后( 先加载,再注册 ),在DriverManager.getConnection()发出连接请求时,DriverManager检查每个驱动程序,找到最近的驱动程序(可能有多个可以的)与URL连接。 URL 表示标示数据库的方法。URL语法:jdbc:<子协议>:<子名称>


Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//  加载驱动程序
String url="jdbc:odbc:fred";
DriverManager.getConnection(url,"userID","passwd");







  • Connection对象代表与数据库的连接,连接 过程 包含所执行的SQL语句和在该连接上返回的结果。
  • Statement、PreparedStatement(带或不带参数的预编译SQL)、CallableStatement对象(调用数据库存储过程),将SQL语句发送到数据库中。

a.  excuteQuery()返回单个结果集,如select语句

b.  excuteUpdate()返回受影响的行数,如insert,update,delete

c.  excute()返回多个结果集

Connection con = DriverManager.getConnection(url,
"userID","passwd");
Statement stmt = con.createStatement();
ResultSet st = stmt.excuteQuery("select a,b form Table1");





 注:Statement对象会由Java垃圾回收程序自动关闭,作为良好编程风格需显示关闭它,及时释放DBMS资源。

  • ResultSet 数据库的结果集常用方法如next()等,控制游标在结果集中的移动。

三  应用实例:采用JDBC-ODBC方式访问Access数据库

 

1.先在access数据库中创建数据库test,并创建表user,字段信息,username,userpwd,userxian

2.创建odbc数据源连接,方法略

3.完成数据库添加记录操作,需要两个JSP页面,一个为数据输入页面 in1.jsp ,一个为数据处理页面 in2.jsp

代码如下:

in1.jsp

<%@page contentType="text/html; charset=GB2312" language="java" 
import="java.io.*"%>
<html>
<body>
<center>
<h3>添加用户页面</h3>
<form method=post action=in2.jsp>
  用户名:<input name=username><br>
  密&nbsp;&nbsp;码:&nbsp;<input type=password name=userpwd><br>
  <input type=submit value="提交"><input type=reset value="重置">
</form>
</center>
</body>
</html>





      in2.jsp

<%@page contentType="text/html; charset=GB2312" language="java"
	import="java.sql.*"%>
<%!String getS(String str) {
		try {
			byte b[] = str.getBytes("iso-8859-1");
			str = new String(b);
		} catch (Exception e) {
			str = "出现异常";
		}
		return str;
	}%>
<%
	try {
		String str1 = request.getParameter("username");
		String str2 = request.getParameter("userpwd");
		str1 = getS(str1.trim());
		str2 = getS(str2.trim());
		Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
		Connection con1 = DriverManager.getConnection("jdbc:odbc:test");
		Statement stmt1 = con1.createStatement();
		stmt1
				.executeUpdate("INSERT INTO user(username,userpwd) VALUES ('"
						+ str1 + "','" + str2 + "')");
		out.println("新用户已经成功添加");
		con1.close();
	} catch (Exception e) {
	}
%>







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值