`

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

    博客分类:
  • JSP
阅读更多
动态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-->关闭
Java代码
1.<%@ page contentType="text/html;charset=gb2312"%>  
2.<%@ page import="java.sql.*"%>  
3.<%!  
4.    // 定义数据库驱动程序  
5.    String DBDRIVER = "sun.jdbc.odbc.JdbcOdbcDriver" ;  
6.    // 定义数据库连接地址  
7.    String DBURL = "jdbc:odbc:sky" ;  
8. 
9.    // 定义数据库连接对象,属于java.sql包中的接口  
10.    Connection conn = null ;  
11. 
12.    // 定义Statement对象,用于操作数据库  
13.    Statement stmt = null ;  
14. 
15.    // 定义一字符串变量,用于保存SQL语句  
16.    String sql = null ;  
17.%>  
18.<%  
19.    // 1、加载驱动程序  
20.    try {  
21.        Class.forName(DBDRIVER) ;  
22.    } catch(Exception e) {  
23.        // 此处使用out.print是处于演示目的,在实际开发中所有的错误消息,绝对不能够通过out.print打印,否则会存在安全问题  
24.        out.println("数据库驱动程序加载失败!!!") ;  
25.    }  
26. 
27.    // 2、连接数据库  
28.    try {  
29.        conn = DriverManager.getConnection(DBURL) ;  
30.    } catch(Exception e) {  
31.        out.println("数据库连接失败!!!") ;  
32.    }  
33. 
34.    // 3、操作数据库  
35.    // 通过Connection对象实例化Statement对象  
36.    try {  
37.        stmt = conn.createStatement() ;  
38.        // 为sql变量赋值  
39.        // 插入语句  
40.        sql = "INSERT INTO person (name,password,age) VALUES (darkness,'wind',22)" ;  
41.        // 更新语句  
42.        // sql = "UPDATE person SET name='wind',password='darkness' WHERE id=3" ;  
43.        // 按ID删除记录  
44.        // sql = "DELETE FROM person WHERE id=4" ;  
45.        // 通过Statement对象执行此SQL语句  
46.        stmt.executeUpdate(sql) ;  
47.    } catch(Exception e) {  
48.        out.println("操作数据库失败!!!") ;  
49.    }  
50.    // 4、关闭数据库  
51.    try {  
52.        // 关闭操作  
53.        stmt.close() ;  
54.        // 关闭连接  
55.        conn.close() ;  
56.    } catch(Exception e) {  
57.        out.println("数据库关闭失败!!!") ;  
58.    }  
59.%> 
<%@ 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("数据库关闭失败!!!") ;
}
%>

查询数据库的主要步骤:
Java代码
1.<%@ page contentType="text/html;charset=gb2312"%>  
2.<%@ page import="java.sql.*"%>  
3.<%--  
4.    此代码主要进行查询操作  
5.--%>  
6.<%!  
7.    // 定义数据库驱动程序  
8.    String DBDRIVER = "sun.jdbc.odbc.JdbcOdbcDriver" ;  
9.    // 定义数据库连接地址  
10.    String DBURL = "jdbc:odbc:sky" ;  
11. 
12.    // 定义数据库连接对象,属于java.sql包中的接口  
13.    Connection conn = null ;  
14. 
15.    // 定义Statement对象,用于操作数据库  
16.    Statement stmt = null ;  
17. 
18.    // 定义一字符串变量,用于保存SQL语句  
19.    String sql = null ;  
20. 
21.    // 查询返回的结果集对象  
22.    ResultSet rs = null ;  
23.%>  
24.<%  
25.    // 1、加载驱动程序  
26.    try {  
27.        Class.forName(DBDRIVER) ;  
28.    } catch(Exception e) {  
29.        // 此处使用out.print是处于演示目的,在实际开发中所有的错误消息,绝对不能够通过out.print打印,否则会存在安全问题  
30.        out.println("数据库驱动程序加载失败!!!") ;  
31.    }  
32. 
33.    // 2、连接数据库  
34.    try {  
35.        conn = DriverManager.getConnection(DBURL) ;  
36.    } catch(Exception e) {  
37.        out.println("数据库连接失败!!!") ;  
38.    }  
39. 
40.    // 3、操作数据库  
41.    // 通过Connection对象实例化Statement对象  
42.    try {  
43.        stmt = conn.createStatement() ;  
44.        // 编写查询的SQL语句  
45.        sql = "SELECT id,name,password,age FROM person" ;  
46.        // 查询数据库,此方法返回ResultSet对象  
47.        rs = stmt.executeQuery(sql) ;  
48.%>  
49.    <table border="1" width="80%">  
50.    <tr>  
51.        <td>ID</td>  
52.        <td>姓名</td>  
53.        <td>密码</td>  
54.        <td>年龄</td>  
55.    </tr>  
56.<%  
57.        while(rs.next()) {  
58.            int id = rs.getInt(1) ;  
59.            String name = rs.getString(2) ;  
60.            String password = rs.getString(3) ;  
61.            int age = rs.getInt(4) ;  
62.%>  
63.            <tr>  
64.                <td><%=id%></td>  
65.                <td><%=name%></td>  
66.                <td><%=password%></td>  
67.                <td><%=age%></td>  
68.            </tr>  
69.<%  
70.        }  
71.%>  
72.    </table>  
73.<%  
74.    } catch(Exception e) {  
75.        out.println("操作数据库失败!!!") ;  
76.    }  
77.    // 4、关闭数据库  
78.    try {  
79.        // 关闭结果集  
80.        rs.close() ;  
81.        // 关闭操作  
82.        stmt.close() ;  
83.        // 关闭连接  
84.        conn.close() ;  
85.    } catch(Exception e) {  
86.        out.println("数据库关闭失败!!!") ;  
87.    }  
88.%> 
<%@ 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对象,
Java代码
1.---------------------add.html----------  
2.<form action="jdbcDemo05.jsp" method="post">  
3.姓名:<input type="text" name="uname"><br>  
4.密码:<input type="password" name="upass"><br>  
5.年龄:<input type="text" name="age"><br>  
6.<input type="submit" value="增加">  
7.</form>  
8.---------------------add.jsp---------  
9.<%@ page contentType="text/html;charset=gb2312"%>  
10.<%@ page import="java.sql.*"%>  
11.<%!  
12.    // 定义数据库驱动程序  
13.    String DBDRIVER = "sun.jdbc.odbc.JdbcOdbcDriver" ;  
14.    // 定义数据库连接地址  
15.    String DBURL = "jdbc:odbc:sky" ;  
16. 
17.    // 定义数据库连接对象,属于java.sql包中的接口  
18.    Connection conn = null ;  
19. 
20.    // 定义PreapredStatement对象,用于操作数据库  
21.    PreparedStatement pstmt = null ;  
22. 
23.    // 定义一字符串变量,用于保存SQL语句  
24.    String sql = null ;  
25.%>  
26.<%  
27.    // 接收表单参数  
28.    // 处理乱码  
29.    request.setCharacterEncoding("GB2312") ;  
30.    String name = request.getParameter("uname") ;  
31.    String password = request.getParameter("upass") ;  
32.    int age = 0 ;  
33.    try {  
34.        age = Integer.parseInt(request.getParameter("age")) ;  
35.    } catch(Exception e) {  
36.    }  
37. 
38.    // 需要重新组合新的SQL语句  
39.    sql = "INSERT INTO person (name,password,age) VALUES (?,?,?)" ;  
40. 
41.    // out.println(sql) ;  
42. 
43.    // 1、加载驱动程序  
44.    try {  
45.        Class.forName(DBDRIVER) ;  
46.    } catch(Exception e) {  
47.        // 此处使用out.print是处于演示目的,在实际开发中所有的错误消息,绝对不能够通过out.print打印,否则会存在安全问题  
48.        out.println("数据库驱动程序加载失败!!!") ;  
49.    }  
50. 
51.    // 2、连接数据库  
52.    try {  
53.        conn = DriverManager.getConnection(DBURL) ;  
54.    } catch(Exception e) {  
55.        out.println("数据库连接失败!!!") ;  
56.    }  
57. 
58.    // 3、操作数据库  
59.    // 通过Connection对象实例化Statement对象  
60.    try {  
61.        pstmt = conn.prepareStatement(sql) ;  
62.        // 通过Statement对象执行此SQL语句  
63.        // 向变量中设置内容  
64.        pstmt.setString(1,name) ;  
65.        pstmt.setString(2,password) ;  
66.        pstmt.setInt(3,age) ;  
67.        pstmt.executeUpdate() ;  
68.    } catch(Exception e) {  
69.        out.println("操作数据库失败!!!") ;  
70.    }  
71.    // 4、关闭数据库  
72.    try {  
73.        // 关闭操作  
74.        pstmt.close() ;  
75.        // 关闭连接  
76.        conn.close() ;  
77.    } catch(Exception e) {  
78.        out.println("数据库关闭失败!!!") ;  
79.    }  
80.%> 
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics