java连接mysql数据库(jsp显示和控制台显示)

时间:2022-08-24 09:20:20

       很多事情,在我们没有做之前我们觉得好难,但是只要你静下心来,毕竟这些都是人搞出来的,只要你是人,那就一定可以明白。

配置:JDK1.8,MySQL5.7,eclipse:Neon Release (4.6.0),connector:mysql-connector-java-3.1.6-bin.jar

1、java连接数据库,并将结果显示在jsp页面中

这里需要用到tomcat服务器,怎么配置可以百度,下面会给出项目的工程配置和源代码以及实际运行效果。

这里,需要注意的一点是关于mysql-connector-java-3.1.6-bin.jar(版本随意,不要太旧就行)的配置,由于我新建的是“WEB->Dynamic Web project”,所以我们需要把mysql-connector-java-3.1.6-bin.jar放在WebContent->WEB-INF->lib文件夹下。不然会出现下图所示的错误。

java连接mysql数据库(jsp显示和控制台显示)

由于是Dynamic Web project,所以不能采用Build Path->Configure Build Path->Add External JARs的形式添加mysql-connector-java-3.1.6-bin.jar,如果你执意要如此,还是会出现上图所示的找不到合适驱动的错误。

下面给出正确的工程拓扑结构及源码:

java连接mysql数据库(jsp显示和控制台显示)

web.xml源码:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>JDBCTest1</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
</web-app>

index.jsp源码:

<%@ page language="java" import="java.sql.*" pageEncoding="UTF-8"%>
<%
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
System.out.println("加载数据库驱动时抛出异常,内容如下:");
e.printStackTrace();
}
Connection conn = DriverManager
.getConnection(
"jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8","root", "w513723");
Statement stmt = conn.createStatement();
ResultSet rs = stmt
.executeQuery("select * from user");
while (rs.next()) {
out.println("ID:"+rs.getString(1)+" "+"用户名:" + rs.getString(2)+" " + " 密码:" + rs.getString(3)+".mdb<br/>");
}
rs.close();
stmt.close();
conn.close();
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body> </body>
</html>

user表结构:

java连接mysql数据库(jsp显示和控制台显示)

实际运行效果:

java连接mysql数据库(jsp显示和控制台显示)

 

2、java连接数据库,封装创建、插入、查找接口

这个没有太多讲的,这里与上面的区别在于这是普通的java工程,不是动态web项目,所以mysql-connector-java-3.1.6-bin.jar使用Build Path->Configure Build Path->Add External JARs添加即可。

(代码源于《JAVA web程序设计 慕课版》明日科技)有时间我会增减删除和更新表的操作。

工程拓扑结构:

java连接mysql数据库(jsp显示和控制台显示)

源代码:

JDBCUtil.java

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement; public class JDBCUtil { /*使用静态代码块完成驱动的加载*/
static {
try {
String driverName = "com.mysql.jdbc.Driver";
Class.forName(driverName);
} catch (Exception e) {
e.printStackTrace();
}
}
/*提供连接的方法*/
public static Connection getConnection() {
Connection con = null;
try {
//连接指定的MMySQL数据库,三个参数分别是:数据库地址、账号、密码
con = DriverManager.getConnection("jdbc:mysql://127.0.0.1/test?useUnicode=true&characterEncoding=utf8", "root", "w513723");
} catch (Exception e) {
e.printStackTrace();
}
return con;
}
/*关闭连接的方法*/
public static void close(ResultSet rs, Statement stmt, Connection con) {
try {
if (rs != null)
rs.close();
} catch (Exception ex) {
ex.printStackTrace();
}
try {
if (stmt != null)
stmt.close();
} catch (Exception ex) {
ex.printStackTrace();
}
try {
if (con != null)
con.close();
} catch (Exception ex) {
ex.printStackTrace();
}
}
}

DaoTest.java

 

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement; public class DaoTest {
Connection con;
Statement stmt;
ResultSet rs; public Connection getCon() {
return con;
} public Statement getStmt() {
return stmt;
} public ResultSet getRs() {
return rs;
} public DaoTest(Connection con) {
this.con = con;
try {
stmt = con.createStatement();
} catch (SQLException e) {
e.printStackTrace();
}
} public void createTable() throws SQLException {
stmt.executeUpdate("DROP TABLE IF EXISTS `jdbc_test` ");//删除相同名称的表
String sql = "create table jdbc_test(id int,name varchar(100)) ";
stmt.executeUpdate(sql);//执行SQL
System.out.println("jdbc_test表创建完毕");
} public void insert() throws SQLException {
String sql1 = "insert into jdbc_test values(1,'tom') ";
String sql2 = "insert into jdbc_test values(2,'张三') ";
String sql3 = "insert into jdbc_test values(3,'999') ";
stmt.addBatch(sql1);
stmt.addBatch(sql2);
stmt.addBatch(sql3);
int[] results = stmt.executeBatch();//批量运行sql
for (int i = 0; i < results.length; i++) {
System.out.println("第" + (i + 1) + "次插入返回" + results[0] + "条结果");
}
} public void select() throws SQLException {
String sql = "select id,name from jdbc_test ";
rs = stmt.executeQuery(sql);
System.out.println("---数据库查询的结果----");
System.out.println("id\tname");
System.out.println("---------------------");
while (rs.next()) {
String id = rs.getString("id");
String name = rs.getString("name");
System.out.print(id + "\t" + name+"\n");
}
} public static void main(String[] args) {
Connection con = JDBCUtil.getConnection();
DaoTest dao = new DaoTest(con);
try {
dao.createTable();
dao.insert();
dao.select();
} catch (SQLException e) {
e.printStackTrace();
} finally {
JDBCUtil.close(dao.getRs(), dao.getStmt(), dao.getCon());
}
} }

程序运行控制台输出:

java连接mysql数据库(jsp显示和控制台显示)

数据库查询结构:

java连接mysql数据库(jsp显示和控制台显示)

增加删除和更新操作(其实很简单的,当初为什么没有写呢?被吓到了???)

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement; public class DaoTest {
Connection con;
Statement stmt;
ResultSet rs; public Connection getCon() {
return con;
} public Statement getStmt() {
return stmt;
} public ResultSet getRs() {
return rs;
} public DaoTest(Connection con) {
this.con = con;
try {
stmt = con.createStatement();
} catch (SQLException e) {
e.printStackTrace();
}
} public void createTable() throws SQLException {
stmt.executeUpdate("DROP TABLE IF EXISTS `jdbc_test` ");//删除相同名称的表
String sql = "create table jdbc_test(id int,name varchar(100)) ";
stmt.executeUpdate(sql);//执行SQL
System.out.println("jdbc_test表创建完毕");
} public void insert() throws SQLException {
String sql1 = "insert into jdbc_test values(1,'tom') ";
String sql2 = "insert into jdbc_test values(2,'张三') ";
String sql3 = "insert into jdbc_test values(3,'999') ";
stmt.addBatch(sql1);
stmt.addBatch(sql2);
stmt.addBatch(sql3);
int[] results = stmt.executeBatch();//批量运行sql
for (int i = 0; i < results.length; i++) {
System.out.println("第" + (i + 1) + "次插入返回" + results[0] + "条结果");
}
} public void select() throws SQLException {
String sql = "select id,name from jdbc_test ";
rs = stmt.executeQuery(sql);
System.out.println("---数据库查询的结果----");
System.out.println("id\tname");
System.out.println("---------------------");
while (rs.next()) {
String id = rs.getString("id");
String name = rs.getString("name");
System.out.print(id + "\t" + name+"\n");
}
} public void delete() throws SQLException
{
String sql="delete from jdbc_test where id in (1,2)";
int tmp=stmt.executeUpdate(sql); //这里函数的返回值表示成功删除了多少条数据
if (tmp<1)
{
System.out.println("要删除的数据不存在或删除错误!");
}
else
{
System.out.println("成功删除"+tmp+"条数据");
}
} public void update() throws SQLException
{
String sql="update jdbc_test set name='shuai' where id=3";
int tmp=stmt.executeUpdate(sql); //这里函数的返回值表示成功更新了多少条数据
if (tmp<1)
{
System.out.println("需要更新的数据不存在或更新错误!");
}
else
{
System.out.println("成功更新"+tmp+"条数据");
} } public static void main(String[] args) {
Connection con = JDBCUtil.getConnection();
DaoTest dao = new DaoTest(con);
try {
dao.createTable();
dao.insert();
dao.select();
dao.delete();
dao.select();
dao.update();
dao.select();
} catch (SQLException e) {
e.printStackTrace();
} finally {
JDBCUtil.close(dao.getRs(), dao.getStmt(), dao.getCon());
}
} }

运行截图:

java连接mysql数据库(jsp显示和控制台显示)

java连接mysql数据库(jsp显示和控制台显示)的更多相关文章

  1. Java进阶&lpar;二十五&rpar;Java连接mysql数据库&lpar;底层实现&rpar;

    Java进阶(二十五)Java连接mysql数据库(底层实现) 前言 很长时间没有系统的使用java做项目了.现在需要使用java完成一个实验,其中涉及到java连接数据库.让自己来写,记忆中已无从搜 ...

  2. java连接mysql数据库详细步骤解析

    java连接mysql数据库详细步骤解析      第一步:下载一个JDBC驱动包,例如我用的是:mysql-connector-java-5.1.17-bin.jar      第二步:导入下载的J ...

  3. Java连接MySQL数据库及简单操作代码

    1.Java连接MySQL数据库 Java连接MySql需要下载JDBC驱动MySQL-connector-java-5.0.5.zip(举例,现有新版本).然后将其解压缩到任一目录.我是解压到D盘, ...

  4. php 连接mysql数据库并显示数据 实例 转载

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...

  5. 转载:Java连接MySQL 数据库的正确操作流程

    转载网址:http://www.bitscn.com/pdb/mysql/201005/186551.html       以下的文章主要介绍的是Java连接MySQL 数据库(以MySQL数据库为例 ...

  6. Java连接MySQL数据库增删改查通用方法

    版权声明:本文为博主原创文章,未经博主允许不得转载. Java连接MySQL数据库增删改查通用方法 运行环境:eclipse+MySQL 以前我们Java连接MySQL数据库都是一个数据库写一个类,类 ...

  7. Java 连接 MySQL 数据库

    最近想学习一下 Java 连接 MySQL 数据库,于是有了这样的一些问题&解决办法. 首先是解决 JDBC(Java Data Base Connectivity)驱动问题,因为默认安装的J ...

  8. java连接MySql数据库 zeroDateTimeBehavior

    JAVA连接MySQL数据库,在操作值为0的timestamp类型时不能正确的处理,而是默认抛出一个异常, 就是所见的:java.sql.SQLException: Cannot convert va ...

  9. MySQL学习&lpar;一&rpar;——Java连接MySql数据库

    MySQL学习(一)——Java连接MySql数据库 API详解: 获得语句执行 String sql = "Insert into category(cid, cname) values( ...

  10. JDBC Java 连接 MySQL 数据库

    MySQL 版本:Server version: 5.7.17-log MySQL Community Server (GPL) 用于测试的 MySQL 数据库:game 查看数据库中的表 mysql ...

随机推荐

  1. 使用FlexPaper实现office文件的预览&lpar;C&num;版&rpar;

    需求很简单,用户上传office文件(word.excel.ppt)后,可以预览上传的这些文件.搜索的相关的资料后.整理如下: Step1.用户上传office文件. Step2.把Office文件转 ...

  2. ES6箭头函数

    1. 无参数 var sum = () => 1 + 2; // 等同于: var sum = function() { return 1 + 2; } 2. 返回单个值 var reflect ...

  3. FW开发代码规范---小任性(2)

    三.空行 (1)在每个函数.结构体.枚举定义结束之后都要加空行. 在一个函数体内,逻辑密切相关的语句之间不加空行,其它地方应加空行分隔. struct st1 { - }; // 空行 enum { ...

  4. 「2013-9-14」Change Remote Desktop Port

    修改远程桌面服务(Remote Desktop Service)的端口号,有几点原因: 默认是 3389 端口,也是经常被端口嗅探器扫描的一个端口.更换端口号,一定程度上可以带来更好的安全性. 如果一 ...

  5. Border绘制虚线框(转)

    <Grid> <Border HorizontalAlignment="Center" VerticalAlignment="Center" ...

  6. JS頁面值傳遞

    <script type="text/javascript"> function GetValue() { var url=location.search; var R ...

  7. 通过模拟器和ida搭建Android动态调试环境的问题

    这几天在学Android的native层逆向.在按照教程用ida搭建动态调试环境时,第一步是把android_server 放到手机里执行,但是在手机里可以,在genymotion模拟器上就提示 no ...

  8. Unity3D 定时发射子弹

    using UnityEngine; public class example : MonoBehaviour { public GameObject projectilePrefab; public ...

  9. IOC:AutoFac使用demo

    使用autofac 实现依赖注入 1.引用 autofac.dll 和 autofac.configuration.dll 2.新增接口 IDAL using System; using System ...

  10. React16&period;x特性剪辑

    本文整理了 React 16.x 出现的耳目一新的概念与 api 以及应用场景. 更多 React 系列文章可以订阅blog 16.0 Fiber 在 16 之前的版本的渲染过程可以想象成一次性潜水 ...