[JSP暑假实训] 三.MySQL数据库基本操作及Servlet网站连接显示数据库信息
本系列文章是作者暑假給學(xué)生進(jìn)行實(shí)訓(xùn)分享的筆記,主要介紹MyEclipse環(huán)境下JSP網(wǎng)站開(kāi)發(fā),包括JAVA基礎(chǔ)、網(wǎng)頁(yè)布局、數(shù)據(jù)庫(kù)基礎(chǔ)、Servlet、前端后臺(tái)數(shù)據(jù)庫(kù)交互、DAO等知識(shí)。
前一篇文章講解了MyEclipse環(huán)境下創(chuàng)建JSP注冊(cè)表頁(yè)面,并通過(guò)Servlet獲取所提交的數(shù)據(jù)。這一篇文章將講解MySQL數(shù)據(jù)庫(kù)基本操作,并分享Servlet鏈接數(shù)據(jù)庫(kù)的方法?;A(chǔ)性文章,希望對(duì)讀者有所幫助 ,尤其是我的學(xué)生。
參考前文:
Java+MyEclipse+Tomcat (一)配置過(guò)程及jsp網(wǎng)站開(kāi)發(fā)入門
Java+MyEclipse+Tomcat (二)配置Servlet及簡(jiǎn)單實(shí)現(xiàn)表單提交
Java+MyEclipse+Tomcat (三)配置MySQL及查詢數(shù)據(jù)顯示在JSP網(wǎng)頁(yè)中
Java+MyEclipse+Tomcat (四)Servlet提交表單和數(shù)據(jù)庫(kù)操作
Java+MyEclipse+Tomcat (五)DAO和Java Bean實(shí)現(xiàn)數(shù)據(jù)庫(kù)和界面分開(kāi)操作
Java+MyEclipse+Tomcat (六)詳解Servlet和DAO數(shù)據(jù)庫(kù)增刪改查操作
前文:
[JSP暑假實(shí)訓(xùn)] 一.MyEclipse安裝及JAVA基礎(chǔ)知識(shí)
[JSP暑假實(shí)訓(xùn)] 二.JSP網(wǎng)站創(chuàng)建及Servlet實(shí)現(xiàn)注冊(cè)表單提交、計(jì)算器運(yùn)算
文章目錄
- 一.配置MySQL
- 二.MySQL基本操作
- 三.Navicat for MySQL可視化操作數(shù)據(jù)庫(kù)
- 四.JDBC連接數(shù)據(jù)庫(kù)基礎(chǔ)
- 五.Servlet連接顯示數(shù)據(jù)庫(kù)
一.配置MySQL
首先下載mysql-5.0.96-winx64,安裝過(guò)程如下圖所示。
1.安裝MySQL 5.0
2.選擇手動(dòng)配置、服務(wù)類型、通用多功能型和安裝路徑
3.設(shè)置數(shù)據(jù)庫(kù)訪問(wèn)量連接數(shù)為15、端口為3306(代碼中設(shè)置URL用到)、編碼方式為utf-8
4.設(shè)置默認(rèn)超級(jí)root用戶的用戶名和密碼,最后安裝成功
二.MySQL基本操作
安裝MySQL 5.0成功后,進(jìn)行數(shù)據(jù)庫(kù)的簡(jiǎn)單操作。
1.運(yùn)行MySQL輸入默認(rèn)用戶密碼123456,并創(chuàng)建數(shù)據(jù)庫(kù)hcp(火車票),使用數(shù)據(jù)庫(kù)。
--創(chuàng)建數(shù)據(jù)庫(kù) create database hcp; --使用數(shù)據(jù)庫(kù) use database hcp;2.創(chuàng)建表info(詳情表),包括序號(hào)、起始地、目的地、車次、出發(fā)時(shí)間、價(jià)格、備注。
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;其中,id為自增整數(shù),并且為主鍵,其他的包括varchar類型、時(shí)間類型、浮點(diǎn)型等。
3.顯示表結(jié)構(gòu),使用語(yǔ)句desc info。
4.向信息表中插入數(shù)據(jù)并顯示查詢的數(shù)據(jù)。
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', '貴陽(yáng)', '西安', 'T98', '2019-07-04 12:00:00', '126', NULL); INSERT INTO `info` VALUES ('4', '貴陽(yáng)', '武漢', '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);通過(guò) “select * from info;” 查詢數(shù)據(jù),得到如下圖所示結(jié)果:
此時(shí)MySQL操作數(shù)據(jù)庫(kù)基本講解結(jié)束,你同樣可以實(shí)現(xiàn)數(shù)據(jù)庫(kù)的增刪改查、事務(wù)、存儲(chǔ)過(guò)程等操作,建議安裝可視化的軟件來(lái)替代黑框。
三.Navicat for MySQL可視化操作數(shù)據(jù)庫(kù)
1.運(yùn)行該軟件,點(diǎn)擊“連接”按鈕新建一個(gè)連接。
2.在“新建連接”中輸入自定義連接名,數(shù)據(jù)庫(kù)用戶名為“root”,密碼“123456”。
3.選中數(shù)據(jù)庫(kù)“hcp”,可以對(duì)表進(jìn)行查看、設(shè)計(jì)、新建、刪除、導(dǎo)入、導(dǎo)出等操作。
其中,設(shè)計(jì)表可以修改表的內(nèi)容,或者添加新的字段,如下圖所示:
雙擊表,可以查看數(shù)據(jù)如下所示:
4.選中數(shù)據(jù)庫(kù)“hcp”,右鍵“轉(zhuǎn)儲(chǔ)SQL文件”,將整個(gè)數(shù)據(jù)庫(kù)的內(nèi)容導(dǎo)出sql文件。
導(dǎo)出的SQL文件內(nèi)容如下:
/* Navicat MySQL Data TransferSource Server : 20190704 Source Server Version : 50622 Source Host : localhost:3306 Source Database : hcpTarget Server Type : MYSQL Target Server Version : 50622 File Encoding : 65001Date: 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', '貴陽(yáng)', '西安', 'T98', '2019-07-04 12:00:00', '126', null); INSERT INTO `info` VALUES ('4', '貴陽(yáng)', '武漢', '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);四.JDBC連接數(shù)據(jù)庫(kù)基礎(chǔ)
為統(tǒng)一并簡(jiǎn)化Java語(yǔ)言操作各種數(shù)據(jù)庫(kù),Sun公司提供了JDBC框架,用于所有Java應(yīng)用以統(tǒng)一的方式連接數(shù)據(jù)庫(kù)。JDBC(Java DataBase Connectivity,Java數(shù)據(jù)庫(kù)連接)通過(guò)使用數(shù)據(jù)庫(kù)廠家提供的數(shù)據(jù)庫(kù)JDBC驅(qū)動(dòng)器類,可以連接到任何流程的數(shù)據(jù)庫(kù)上。
1.加載JDBC驅(qū)動(dòng)程序(MySQL驅(qū)動(dòng))
Class.forName("com.mysql.jdbc.Driver") ;2.提供JDBC連接的URL
//驅(qū)動(dòng)程序名 String driverName = "com.mysql.jdbc.Driver"; //數(shù)據(jù)庫(kù)用戶名 String userName = "root"; //密碼 String userPasswd = "123456"; //數(shù)據(jù)庫(kù)名 String dbName = "hcp"; //表名 String tableName = "info"; //聯(lián)結(jié)字符串 String url = "jdbc:mysql://localhost:3306/" + dbName + "?user=" + userName + "&password=" + userPasswd;3.創(chuàng)建數(shù)據(jù)庫(kù)的連接
Connection connection = DriverManager.getConnection(url);4.創(chuàng)建一個(gè)Statement
要執(zhí)行SQL語(yǔ)句,必須獲得java.sql.Statement實(shí)例,Statement實(shí)例分為以下3種類型:
- 執(zhí)行靜態(tài)SQL語(yǔ)句。通常通過(guò)Statement實(shí)例實(shí)現(xiàn)。
- 執(zhí)行動(dòng)態(tài)SQL語(yǔ)句。通常通過(guò)PreparedStatement實(shí)例實(shí)現(xiàn)。
- 執(zhí)行數(shù)據(jù)庫(kù)存儲(chǔ)過(guò)程。通常通過(guò)CallableStatement實(shí)例實(shí)現(xiàn)。
5.執(zhí)行SQL語(yǔ)句
Statement接口提供了三種執(zhí)行SQL語(yǔ)句的方法:executeQuery 、executeUpdate和execute
1).ResultSet executeQuery(String sqlString):執(zhí)行查詢數(shù)據(jù)庫(kù)的SQL語(yǔ)句,返回一個(gè)結(jié)果集(ResultSet)對(duì)象。
2).int executeUpdate(String sqlString):用于執(zhí)行INSERT、UPDATE或DELETE語(yǔ)句以及SQL DDL語(yǔ)句,如:CREATE TABLE和DROP TABLE等。
3).execute(sqlString):用于執(zhí)行返回多個(gè)結(jié)果集、多個(gè)更新計(jì)數(shù)或二者組合的語(yǔ)句。
6.處理結(jié)果
兩種情況:執(zhí)行更新返回的是本次操作影響到的記錄數(shù)、執(zhí)行查詢返回的結(jié)果是一個(gè)ResultSet對(duì)象。
- ResultSet包含符合SQL語(yǔ)句中條件的所有行,并且它通過(guò)一套get方法提供了對(duì)這些行中數(shù)據(jù)的訪問(wèn)。
- 使用結(jié)果集(ResultSet)對(duì)象的訪問(wèn)方法獲取數(shù)據(jù):
7.關(guān)閉JDBC對(duì)象
//釋放連接方法 con ps rs public static void release(Connection con,Statement ps,ResultSet rs){try{if(rs!=null){ // 關(guān)閉記錄集rs.close();}if(ps!=null){ // 關(guān)閉聲明 ps.close();}if(con!=null){ // 關(guān)閉連接對(duì)象 con.close();}}catch (Exception e) {e.printStackTrace();} }五.Servlet連接顯示數(shù)據(jù)庫(kù)
下面介紹最終Servlet連接本地?cái)?shù)據(jù)庫(kù)并顯示內(nèi)容的實(shí)驗(yàn),步驟如下:
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>序號(hào)</td><td>起始地</td><td>目的地</td><td>車次</td><td>時(shí)間</td><td>價(jià)格</td><td>備注</td></tr></table></div></body> </html>此時(shí)運(yùn)行結(jié)果如下圖所示:
3.在JSP文件中增加JAVA連接數(shù)據(jù)庫(kù)的代碼,放置<% %>之間,需要注意while循環(huán)多次遍歷顯示 < tr > < td > 布局。
PS:增加 java.sql.* 擴(kuò)展包
4.運(yùn)行結(jié)果如下所示。
最近連續(xù)十多天給學(xué)生們分享暑假實(shí)訓(xùn),JSP網(wǎng)站開(kāi)發(fā),周末不間斷。大周末深夜凌晨辦公室備課,為了什么?回想三年來(lái),挺感謝學(xué)生們的厚愛(ài)的,無(wú)以回報(bào),只希望自己能好好分享知識(shí),認(rèn)真教好每一位學(xué)生,將心比心,也望自己博士學(xué)成歸來(lái),能繼續(xù)教書育人,感恩家鄉(xiāng)和女神。
(By:Eastmount 2019-07-04 深夜1點(diǎn) http://blog.csdn.net/eastmount/)
總結(jié)
以上是生活随笔為你收集整理的[JSP暑假实训] 三.MySQL数据库基本操作及Servlet网站连接显示数据库信息的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: [JSP暑假实训] 二.JSP网站创建及
- 下一篇: [JSP暑假实训] 四.MyEclips