当前位置:   article > 正文

[JSP暑假实训] 三.MySQL数据库基本操作及Servlet网站连接显示数据库信息_jsp连接mysql显示全部数据

jsp连接mysql显示全部数据

本系列文章是作者暑假给学生进行实训分享的笔记,主要介绍MyEclipse环境下JSP网站开发,包括JAVA基础、网页布局、数据库基础、Servlet、前端后台数据库交互、DAO等知识。
前一篇文章讲解了MyEclipse环境下创建JSP注册表页面,并通过Servlet获取所提交的数据。这一篇文章将讲解MySQL数据库基本操作,并分享Servlet链接数据库的方法。基础性文章,希望对读者有所帮助 ,尤其是我的学生。

参考前文:
Java+MyEclipse+Tomcat (一)配置过程及jsp网站开发入门
Java+MyEclipse+Tomcat (二)配置Servlet及简单实现表单提交
Java+MyEclipse+Tomcat (三)配置MySQL及查询数据显示在JSP网页中
Java+MyEclipse+Tomcat (四)Servlet提交表单和数据库操作
Java+MyEclipse+Tomcat (五)DAO和Java Bean实现数据库和界面分开操作
Java+MyEclipse+Tomcat (六)详解Servlet和DAO数据库增删改查操作

前文:
[JSP暑假实训] 一.MyEclipse安装及JAVA基础知识
[JSP暑假实训] 二.JSP网站创建及Servlet实现注册表单提交、计算器运算


一.配置MySQL

首先下载mysql-5.0.96-winx64,安装过程如下图所示。

1.安装MySQL 5.0

2.选择手动配置、服务类型、通用多功能型和安装路径

3.设置数据库访问量连接数为15、端口为3306(代码中设置URL用到)、编码方式为utf-8

4.设置默认超级root用户的用户名和密码,最后安装成功


二.MySQL基本操作

安装MySQL 5.0成功后,进行数据库的简单操作。

1.运行MySQL输入默认用户密码123456,并创建数据库hcp(火车票),使用数据库。

--创建数据库
create database hcp;
--使用数据库
use database hcp;
  • 1
  • 2
  • 3
  • 4

2.创建表info(详情表),包括序号、起始地、目的地、车次、出发时间、价格、备注。

CREATE TABLE `info` (
  `id` int(11) NOT NULL auto_increment,
  `start` varchar(40) default NULL,
  `end` varchar(40) default NULL,
  `name` varchar(40) default NULL,
  `starttime` datetime default NULL,
  `price` float default NULL,
  `otuer` varchar(100) default NULL,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

其中,id为自增整数,并且为主键,其他的包括varchar类型、时间类型、浮点型等。

3.显示表结构,使用语句desc info。

4.向信息表中插入数据并显示查询的数据。

INSERT INTO `info` VALUES ('1', 'guiyang', 'kunming', 'T61', '2019-06-29 12:00:00', '56', NULL);
INSERT INTO `info` VALUES ('2', 'guiyang', 'kaili', 'T88', '2019-06-29 12:00:00', '26', NULL);
INSERT INTO `info` VALUES ('3', '贵阳', '西安', 'T98', '2019-07-04 12:00:00', '126', NULL);
INSERT INTO `info` VALUES ('4', '贵阳', '武汉', 'T34', '2019-07-04 12:00:00', '86', NULL);
INSERT INTO `info` VALUES ('5', '贵定', '西安', 'T51', '2019-07-04 12:00:00', '134', NULL);
INSERT INTO `info` VALUES ('6', '昆明', '武汉', 'T21', '2019-06-29 12:00:00', '123', NULL);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

通过 “select * from info;” 查询数据,得到如下图所示结果:

此时MySQL操作数据库基本讲解结束,你同样可以实现数据库的增删改查、事务、存储过程等操作,建议安装可视化的软件来替代黑框。


三.Navicat for MySQL可视化操作数据库

1.运行该软件,点击“连接”按钮新建一个连接。

2.在“新建连接”中输入自定义连接名,数据库用户名为“root”,密码“123456”。

3.选中数据库“hcp”,可以对表进行查看、设计、新建、删除、导入、导出等操作。

其中,设计表可以修改表的内容,或者添加新的字段,如下图所示:

双击表,可以查看数据如下所示:

4.选中数据库“hcp”,右键“转储SQL文件”,将整个数据库的内容导出sql文件。

导出的SQL文件内容如下:

/*
Navicat MySQL Data Transfer

Source Server         : 20190704
Source Server Version : 50622
Source Host           : localhost:3306
Source Database       : hcp

Target Server Type    : MYSQL
Target Server Version : 50622
File Encoding         : 65001

Date: 2019-07-04 23:51:16
*/

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for `info`
-- ----------------------------
DROP TABLE IF EXISTS `info`;
CREATE TABLE `info` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `start` varchar(40) DEFAULT NULL,
  `end` varchar(40) DEFAULT NULL,
  `name` varchar(40) DEFAULT NULL,
  `starttime` datetime DEFAULT NULL,
  `price` float DEFAULT NULL,
  `otuer` varchar(100) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of info
-- ----------------------------
INSERT INTO `info` VALUES ('1', 'guiyang', 'kunming', 'T61', '2019-06-29 12:00:00', '56', null);
INSERT INTO `info` VALUES ('2', 'guiyang', 'kaili', 'T88', '2019-06-29 12:00:00', '26', null);
INSERT INTO `info` VALUES ('3', '贵阳', '西安', 'T98', '2019-07-04 12:00:00', '126', null);
INSERT INTO `info` VALUES ('4', '贵阳', '武汉', 'T34', '2019-07-04 12:00:00', '86', null);
INSERT INTO `info` VALUES ('5', '贵定', '西安', 'T51', '2019-07-04 12:00:00', '134', null);
INSERT INTO `info` VALUES ('6', '昆明', '武汉', 'T21', '2019-06-29 12:00:00', '123', null);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41

四.JDBC连接数据库基础

为统一并简化Java语言操作各种数据库,Sun公司提供了JDBC框架,用于所有Java应用以统一的方式连接数据库。JDBC(Java DataBase Connectivity,Java数据库连接)通过使用数据库厂家提供的数据库JDBC驱动器类,可以连接到任何流程的数据库上。

1.加载JDBC驱动程序(MySQL驱动)

Class.forName("com.mysql.jdbc.Driver") ;  
  • 1

2.提供JDBC连接的URL

//驱动程序名   
String driverName = "com.mysql.jdbc.Driver";  
//数据库用户名   
String userName = "root";  
//密码   
String userPasswd = "123456";  
//数据库名   
String dbName = "hcp";  
//表名   
String tableName = "info";  
//联结字符串   
String url = "jdbc:mysql://localhost:3306/" + dbName + "?user="  
        + userName + "&password=" + userPasswd;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

3.创建数据库的连接

Connection connection = DriverManager.getConnection(url);  
  • 1

4.创建一个Statement
要执行SQL语句,必须获得java.sql.Statement实例,Statement实例分为以下3种类型:

  • 执行静态SQL语句。通常通过Statement实例实现。
  • 执行动态SQL语句。通常通过PreparedStatement实例实现。
  • 执行数据库存储过程。通常通过CallableStatement实例实现。

5.执行SQL语句
Statement接口提供了三种执行SQL语句的方法:executeQuery 、executeUpdate和execute
1).ResultSet executeQuery(String sqlString):执行查询数据库的SQL语句,返回一个结果集(ResultSet)对象。

2).int executeUpdate(String sqlString):用于执行INSERT、UPDATE或DELETE语句以及SQL DDL语句,如:CREATE TABLE和DROP TABLE等。

3).execute(sqlString):用于执行返回多个结果集、多个更新计数或二者组合的语句。

6.处理结果
两种情况:执行更新返回的是本次操作影响到的记录数、执行查询返回的结果是一个ResultSet对象。

  • ResultSet包含符合SQL语句中条件的所有行,并且它通过一套get方法提供了对这些行中数据的访问。
  • 使用结果集(ResultSet)对象的访问方法获取数据:
// 此方法比较高效  列是从左到右编号的,并且从列1开始 
while(rs.next()){   
         String name = rs.getString("name") ;   
    	 String pass = rs.getString(1) ; 
} 
  • 1
  • 2
  • 3
  • 4
  • 5

7.关闭JDBC对象

//释放连接方法 con ps rs
public static void release(Connection con,Statement ps,ResultSet rs){
	try{
	if(rs!=null){ // 关闭记录集
		rs.close();
	}
	if(ps!=null){ // 关闭声明 
		ps.close();
	}
	if(con!=null){ // 关闭连接对象 
		con.close();
	}
	}catch (Exception e) {
		e.printStackTrace();
	}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

五.Servlet连接显示数据库

下面介绍最终Servlet连接本地数据库并显示内容的实验,步骤如下:

1.新建“test0704_web”工程,其文件夹如下图所示。

2.修改“index.jsp”代码如下所示:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'index.jsp' starting page</title>
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->
  </head>
  
  <body>
    <div align="center">
    		<img src="imgs/bg.jpg" height="200" width="80%" /><br />
    		<hr width="80%" color="red" size="3" />
    		<h2>火车票查询</h2>
    		
    		<table border="2" width="80%">
    			<tr>
    				<td>序号</td><td>起始地</td><td>目的地</td>
    				<td>车次</td><td>时间</td><td>价格</td><td>备注</td>
    			</tr>
    		</table>
    	</div>
  </body>
</html>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37

此时运行结果如下图所示:

3.在JSP文件中增加JAVA连接数据库的代码,放置<% %>之间,需要注意while循环多次遍历显示 < tr > < td > 布局。
PS:增加 java.sql.* 扩展包

<%@ page language="java" import="java.util.*,java.sql.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'index.jsp' starting page</title>
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->
  </head>
  
  <body>
    <div align="center">
    		<img src="imgs/bg.jpg" height="200" width="80%" /><br />
    		<hr width="80%" color="red" size="3" />
    		<h2>火车票查询</h2>
    		
	    		<!-- 添加JAVA链接数据库的代码 -->
	    		<%
	    			//驱动的名称
	    			String driverName = "com.mysql.jdbc.Driver";
	    			//数据库用户名密码
	    			String userName = "root";
	    			String userPwd = "123456";
	    			//数据库名字
	    			String dbName = "hcp";
	    			//表名
	    			String tableName = "info";
	    			//拼接字符串链接数据库
	    			String url = "jdbc:mysql://localhost:3306/" + dbName + "?user="
	    					+ userName + "&password=" +userPwd;
	    			//链接数据库
	    			Class.forName("com.mysql.jdbc.Driver").newInstance();
	    			
	    			//SQL查询
	    			ResultSet re;
	    			Connection con = DriverManager.getConnection(url);
	    			Statement statement = con.createStatement();
	    			String sql = "select * from " + tableName;
	    			System.out.println(sql);
	   				re = statement.executeQuery(sql);
	    			
	    		%>
    		
    		<table border="2" width="80%">
    			<tr>
    				<td>序号</td><td>起始地</td><td>目的地</td>
    				<td>车次</td><td>时间</td><td>价格</td><td>备注</td>
    			</tr>
    			
    			<%
    				while (re.next()) {
    			
    			%>
    			<tr>
    				<td><% out.print(re.getString(1)); %></td>
    				<td><% out.print(re.getString(2)); %></td>
    				<td><% out.print(re.getString(3)); %></td>
    				<td><% out.print(re.getString(4)); %></td>
    				<td><% out.print(re.getString(5)); %></td>
    				<td><% out.print(re.getString(6)); %></td>
    				<td><% out.print(re.getString(7)); %></td>
    			</tr>
    			
    			<%
    				}
    				
    				//关闭连接
			        re.close();  
			        statement.close();  
			        con.close();  
    			%>
    			
    		</table>
    	</div>
  </body>
</html>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88

4.运行结果如下所示。


最近连续十多天给学生们分享暑假实训,JSP网站开发,周末不间断。大周末深夜凌晨办公室备课,为了什么?回想三年来,挺感谢学生们的厚爱的,无以回报,只希望自己能好好分享知识,认真教好每一位学生,将心比心,也望自己博士学成归来,能继续教书育人,感恩家乡和女神。

(By:Eastmount 2019-07-04 深夜1点 http://blog.csdn.net/eastmount/)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/575379
推荐阅读
相关标签
  

闽ICP备14008679号