快速掌握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

}

“`


数据运维技术 » 快速掌握javaweb查询,轻松显示数据库内容 (javaweb查询显示数据库)