快速掌握javaweb查询,轻松显示数据库内容 (javaweb查询显示数据库)
快速掌握JavaWeb查询,轻松显示数据库内容
随着互联网的快速发展,JavaWeb的应用越来越广泛。其中,数据库查询是JavaWeb开发中的重要部分之一。如何快速掌握JavaWeb查询,并通过网站轻松显示数据库内容,成为JavaWeb初学者必须掌握的技能。
JavaWeb查询可以分为静态查询和动态查询。静态查询即是在Java程序中预先写好SQL语句,然后在程序执行时直接执行SQL语句并返回结果。动态查询即是在页面上通过用户输入的条件,动态生成SQL语句,并执行返回结果。以下分别介绍这两种查询方式。
一、静态查询
静态查询主要是通过JDBC技术访问数据库。需要在程序中建立数据库连接,JavaWeb程序往往采用如下方式连接数据库:
“`java
Class.forName(“com.mysql.jdbc.Driver”);
Connection connection = DriverManager.getConnection(“jdbc:mysql://localhost:3306/dbname”,”username”, “password”);
“`
其中,“jdbc:mysql://localhost:3306/dbname”表示数据库连接地址,“username”表示数据库用户名,“password”表示数据库密码。建立好连接之后,就可以利用Java提供的JDBC API执行SQL查询了。常见的JDBC查询方式有如下几种:
1. Statement
Statement可以执行静态SQL查询。示例代码如下:
“`java
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery(“select * from table”);
while (rs.next()) {
int id = rs.getInt(1);
String name = rs.getString(2);
// … 其他字段
}
“`
2. PreparedStatement
PreparedStatement可以优化SQL查询,提升查询性能。示例代码如下:
“`java
String sql = “select * from table where id = ?”;
PreparedStatement pstmt = connection.prepareStatement(sql);
pstmt.setInt(1, 1);
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
int id = rs.getInt(1);
String name = rs.getString(2);
// … 其他字段
}
“`
3. CallableStatement
CallableStatement可以调用存储过程查询数据。示例代码如下:
“`java
String sql = “{call usp_get_data(?)}”;
CallableStatement cstmt = connection.prepareCall(sql);
cstmt.setInt(1, 1);
ResultSet rs = cstmt.executeQuery();
while (rs.next()) {
int id = rs.getInt(1);
String name = rs.getString(2);
// … 其他字段
}
“`
二、动态查询
动态查询适合于在页面上根据用户的选择生成相应的SQL语句。JavaWeb中,常使用的动态查询方式有两种,即利用JavaServer Pages(P)和JavaServer Faces(F):
1. P
P是一种用于创建动态Web页面的技术,P页面中可以直接嵌入Java代码,能够生成相应的HTML页面。在P页面中使用JDBC查询数据库,示例代码如下:
“`jsp
<%
Class.forName(“com.mysql.jdbc.Driver”);
Connection connection = DriverManager.getConnection(“jdbc:mysql://localhost:3306/dbname”,”username”, “password”);
PreparedStatement pstmt = null;
ResultSet rs = null;
String id = request.getParameter(“id”);
String name = request.getParameter(“name”);
String sql = “select * from table where 1=1”;
if (id != null && !id.trim().isEmpty()) {
sql += ” and id = ?”;
}
if (name != null && !name.trim().isEmpty()) {
sql += ” and name = ?”;
}
pstmt = connection.prepareStatement(sql);
int index = 1;
if (id != null && !id.trim().isEmpty()) {
pstmt.setInt(index++, Integer.parseInt(id));
}
if (name != null && !name.trim().isEmpty()) {
pstmt.setString(index++, name);
}
rs = pstmt.executeQuery();
while (rs.next()) {
int id = rs.getInt(1);
String name = rs.getString(2);
// … 其他字段
}
%>
“`
2. F
F是JavaServer Faces的缩写,是一个用于创建Web应用程序的框架。F可以通过标签库将页面与Java代码结合起来。在F页面中使用JDBC查询数据库,示例代码如下:
“`xhtml
ID
#{item.id}
名称
#{item.name}
“`
“`java
@Named
@RequestScoped
public class Bean {
private String id;
private String name;
private List list;
public void doQuery() {
Class.forName(“com.mysql.jdbc.Driver”);
Connection connection = DriverManager.getConnection(“jdbc:mysql://localhost:3306/dbname”,”username”, “password”);
PreparedStatement pstmt = null;
ResultSet rs = null;
String sql = “select * from table where 1=1”;
if (id != null && !id.trim().isEmpty()) {
sql += ” and id = ?”;
}
if (name != null && !name.trim().isEmpty()) {
sql += ” and name = ?”;
}
pstmt = connection.prepareStatement(sql);
int index = 1;
if (id != null && !id.trim().isEmpty()) {
pstmt.setInt(index++, Integer.parseInt(id));
}
if (name != null && !name.trim().isEmpty()) {
pstmt.setString(index++, name);
}
rs = pstmt.executeQuery();
List list = new ArrayList();
while (rs.next()) {
Data data = new Data();
data.setId(rs.getString(1));
data.setName(rs.getString(2));
// … 其他字段
list.add(data);
}
this.list = list;
}
// … getter and setter
}
“`