以下是在JSP中访问数据库的完整攻略:
1. 准备工作
要在JSP中访问数据库,首先需要安装JDBC驱动和配置数据库连接信息。
- 下载对应数据库的JDBC驱动jar包,将其放置于Web应用的
WEB-INF/lib
目录下 - 在Web应用的
WEB-INF
目录下创建一个名为web.xml
的文件,并在其中配置数据库连接信息,比如连接地址、用户名、密码等
<!-- 以下是MySQL的配置示例 -->
<context-param>
<param-name>jdbc_driver_class</param-name>
<param-value>com.mysql.cj.jdbc.Driver</param-value>
</context-param>
<context-param>
<param-name>jdbc_url</param-name>
<param-value>jdbc:mysql://localhost:3306/mydb?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC</param-value>
</context-param>
<context-param>
<param-name>jdbc_username</param-name>
<param-value>root</param-value>
</context-param>
<context-param>
<param-name>jdbc_password</param-name>
<param-value>password</param-value>
</context-param>
2. 连接数据库
在JSP中,连接数据库的代码通常写在<%! %>
标签中或者通过JavaBean来完成。
以下是两个示例:
方式一:使用JSP内的Java代码进行连接
<%@ page import="java.sql.*" %>
<%@ page import="javax.naming.*" %>
<%
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
// 获取数据库连接
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
DataSource ds = (DataSource) envCtx.lookup("jdbc/myds");
conn = ds.getConnection();
// 执行SQL查询语句并处理结果集
stmt = conn.createStatement();
rs = stmt.executeQuery("select * from mytable");
while (rs.next()) {
out.println(rs.getString(1));
}
} catch (Exception e) {
e.printStackTrace();
} finally {
// 关闭数据库资源
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (stmt != null) {
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
%>
方式二:使用JavaBean进行连接
<%@ page import="com.example.MyDBBean" %>
<jsp:useBean id="mydb" class="com.example.MyDBBean" scope="page" />
<%
// 执行SQL查询语句并处理结果集
ResultSet rs = mydb.query("select * from mytable");
while (rs.next()) {
out.println(rs.getString(1));
}
rs.close();
%>
3. 执行SQL语句
连接数据库成功后,可以通过Statement
或PreparedStatement
对象来执行SQL查询或更新操作。
以下是两个示例:
方式一:使用Statement执行SQL语句
<%@ page import="java.sql.*" %>
<%@ page import="javax.naming.*" %>
<%
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
// 获取数据库连接
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
DataSource ds = (DataSource) envCtx.lookup("jdbc/myds");
conn = ds.getConnection();
// 执行SQL查询语句并处理结果集
stmt = conn.createStatement();
rs = stmt.executeQuery("select * from mytable");
while (rs.next()) {
out.println(rs.getString(1));
}
// 执行SQL更新语句
stmt.executeUpdate("update mytable set column1 = 'newvalue' where id = 1");
} catch (Exception e) {
e.printStackTrace();
} finally {
// 关闭数据库资源
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (stmt != null) {
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
%>
方式二:使用PreparedStatement执行SQL语句
<%@ page import="java.sql.*" %>
<%@ page import="javax.naming.*" %>
<%
Connection conn = null;
PreparedStatement stmt = null;
ResultSet rs = null;
try {
// 获取数据库连接
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
DataSource ds = (DataSource) envCtx.lookup("jdbc/myds");
conn = ds.getConnection();
// 执行SQL查询语句并处理结果集
stmt = conn.prepareStatement("select * from mytable where column1 = ?");
stmt.setString(1, "value");
rs = stmt.executeQuery();
while (rs.next()) {
out.println(rs.getString(1));
}
// 执行SQL更新语句
stmt = conn.prepareStatement("update mytable set column1 = ? where id = ?");
stmt.setString(1, "newvalue");
stmt.setInt(2, 1);
stmt.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
} finally {
// 关闭数据库资源
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (stmt != null) {
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
%>
总结
上述是在JSP中访问数据库的完整攻略,包括准备工作、连接数据库、执行SQL语句等几个步骤。在具体使用时,可以根据实际情况选择不同的方式来连接数据库和执行SQL语句。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:在JSP中访问数据库大全 - Python技术站