JSP复习笔记——第10章 连接数据库之JDBC简介与基本使用

动态web的最大特点--> 可以操作数据库
JSP属于动态web程序—> JDBC去操作数据库

JDBC本身是Java连接数据库的一个标准
使用数据库之中,可以发现,对数据库的处理由数据库管理系统去操作
JDBC:是JAVA操作数据库的方法
ODBC:是微软的数据库操作

JDBC-ODBC桥接方式:JDBC-ODBC是在JDK中由SUN本身开发出来的一套数据库访问操作,在JDBC-ODBC桥接中,它的各种操作API都是最新的,但性能较低,使用ODBC提供的数据库连接技术访问数据库,在开发中此方式肯定不用,因为性能低
JDBC驱动程序:有各个厂商按JDBC标准提供

建立好数据库和表后,要配置数据源
数据源名称为程序中真正要使用到的名称:
ODBC的基本原理:
通过一个数据源名称-->找到数据库
为数据库起了一个别名—>程序通过别名访问数据库
即:程序只任名称,不任数据库

JDBC-ODBC数据库连接驱动程序是由SUN提供的,为:sun.jdbc.odbc.JdbcOdbcDriver
操作数据库使用以下两个主要接口:
 statement
 preparedStatement

使用statement可以向数据库中执行SQL语句
SQL两大操作
 更新数据:executeUpdate()
 查询数据:executeQuery()

更新数据库的主要步骤:
加载驱动程序-->打开连接Connection-->操作statement-->关闭

<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>
<%!
	// 定义数据库驱动程序
	String DBDRIVER = "sun.jdbc.odbc.JdbcOdbcDriver" ;
	// 定义数据库连接地址
	String DBURL = "jdbc:odbc:sky" ;

	// 定义数据库连接对象,属于java.sql包中的接口
	Connection conn = null ;

	// 定义Statement对象,用于操作数据库
	Statement stmt = null ;

	// 定义一字符串变量,用于保存SQL语句
	String sql = null ;
%>
<%
	// 1、加载驱动程序
	try {
		Class.forName(DBDRIVER) ;
	} catch(Exception e) {
		// 此处使用out.print是处于演示目的,在实际开发中所有的错误消息,绝对不能够通过out.print打印,否则会存在安全问题
		out.println("数据库驱动程序加载失败!!!") ;
	}

	// 2、连接数据库
	try {
		conn = DriverManager.getConnection(DBURL) ;
	} catch(Exception e) {
		out.println("数据库连接失败!!!") ;
	}

	// 3、操作数据库
	// 通过Connection对象实例化Statement对象
	try {
		stmt = conn.createStatement() ;
		// 为sql变量赋值
		// 插入语句
		sql = "INSERT INTO person (name,password,age) VALUES (darkness,'wind',22)" ;
		// 更新语句
		// sql = "UPDATE person SET name='wind',password='darkness' WHERE id=3" ;
		// 按ID删除记录
		// sql = "DELETE FROM person WHERE id=4" ;
		// 通过Statement对象执行此SQL语句
		stmt.executeUpdate(sql) ;
	} catch(Exception e) {
		out.println("操作数据库失败!!!") ;
	}
	// 4、关闭数据库
	try {
		// 关闭操作
		stmt.close() ;
		// 关闭连接
		conn.close() ;
	} catch(Exception e) {
		out.println("数据库关闭失败!!!") ;
	}
%>



查询数据库的主要步骤:

<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>
<%--
	此代码主要进行查询操作
--%>
<%!
	// 定义数据库驱动程序
	String DBDRIVER = "sun.jdbc.odbc.JdbcOdbcDriver" ;
	// 定义数据库连接地址
	String DBURL = "jdbc:odbc:sky" ;

	// 定义数据库连接对象,属于java.sql包中的接口
	Connection conn = null ;

	// 定义Statement对象,用于操作数据库
	Statement stmt = null ;

	// 定义一字符串变量,用于保存SQL语句
	String sql = null ;

	// 查询返回的结果集对象
	ResultSet rs = null ;
%>
<%
	// 1、加载驱动程序
	try {
		Class.forName(DBDRIVER) ;
	} catch(Exception e) {
		// 此处使用out.print是处于演示目的,在实际开发中所有的错误消息,绝对不能够通过out.print打印,否则会存在安全问题
		out.println("数据库驱动程序加载失败!!!") ;
	}

	// 2、连接数据库
	try {
		conn = DriverManager.getConnection(DBURL) ;
	} catch(Exception e) {
		out.println("数据库连接失败!!!") ;
	}

	// 3、操作数据库
	// 通过Connection对象实例化Statement对象
	try {
		stmt = conn.createStatement() ;
		// 编写查询的SQL语句
		sql = "SELECT id,name,password,age FROM person" ;
		// 查询数据库,此方法返回ResultSet对象
		rs = stmt.executeQuery(sql) ;
%>
	<table border="1" width="80%">
	<tr>
		<td>ID</td>
		<td>姓名</td>
		<td>密码</td>
		<td>年龄</td>
	</tr>
<%
		while(rs.next()) {
			int id = rs.getInt(1) ;
			String name = rs.getString(2) ;
			String password = rs.getString(3) ;
			int age = rs.getInt(4) ;
%>
			<tr>
				<td><%=id%></td>
				<td><%=name%></td>
				<td><%=password%></td>
				<td><%=age%></td>
			</tr>
<%
		}
%>
	</table>
<%
	} catch(Exception e) {
		out.println("操作数据库失败!!!") ;
	}
	// 4、关闭数据库
	try {
		// 关闭结果集
		rs.close() ;
		// 关闭操作
		stmt.close() ;
		// 关闭连接
		conn.close() ;
	} catch(Exception e) {
		out.println("数据库关闭失败!!!") ;
	}
%>



问题:使用Statement需要一个完整的SQL语句,但如果输入的内容包含“”,会造成SQL语句不正确。
解决:使用Statement的子接口:PreparedStatement
建议:在开发中不要去使用Statenent对象,

---------------------add.html----------
<form action="jdbcDemo05.jsp" method="post">
姓名:<input type="text" name="uname"><br>
密码:<input type="password" name="upass"><br>
年龄:<input type="text" name="age"><br>
<input type="submit" value="增加">
</form>
---------------------add.jsp---------
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>
<%!
	// 定义数据库驱动程序
	String DBDRIVER = "sun.jdbc.odbc.JdbcOdbcDriver" ;
	// 定义数据库连接地址
	String DBURL = "jdbc:odbc:sky" ;

	// 定义数据库连接对象,属于java.sql包中的接口
	Connection conn = null ;

	// 定义PreapredStatement对象,用于操作数据库
	PreparedStatement pstmt = null ;

	// 定义一字符串变量,用于保存SQL语句
	String sql = null ;
%>
<%
	// 接收表单参数
	// 处理乱码
	request.setCharacterEncoding("GB2312") ;
	String name = request.getParameter("uname") ;
	String password = request.getParameter("upass") ;
	int age = 0 ;
	try {
		age = Integer.parseInt(request.getParameter("age")) ;
	} catch(Exception e) {
	}

	// 需要重新组合新的SQL语句
	sql = "INSERT INTO person (name,password,age) VALUES (?,?,?)" ;

	// out.println(sql) ;

	// 1、加载驱动程序
	try {
		Class.forName(DBDRIVER) ;
	} catch(Exception e) {
		// 此处使用out.print是处于演示目的,在实际开发中所有的错误消息,绝对不能够通过out.print打印,否则会存在安全问题
		out.println("数据库驱动程序加载失败!!!") ;
	}

	// 2、连接数据库
	try {
		conn = DriverManager.getConnection(DBURL) ;
	} catch(Exception e) {
		out.println("数据库连接失败!!!") ;
	}

	// 3、操作数据库
	// 通过Connection对象实例化Statement对象
	try {
		pstmt = conn.prepareStatement(sql) ;
		// 通过Statement对象执行此SQL语句
		// 向变量中设置内容
		pstmt.setString(1,name) ;
		pstmt.setString(2,password) ;
		pstmt.setInt(3,age) ;
		pstmt.executeUpdate() ;
	} catch(Exception e) {
		out.println("操作数据库失败!!!") ;
	}
	// 4、关闭数据库
	try {
		// 关闭操作
		pstmt.close() ;
		// 关闭连接
		conn.close() ;
	} catch(Exception e) {
		out.println("数据库关闭失败!!!") ;
	}
%>

你可能感兴趣的:(sql,jsp,Web,jdbc,sun)