JSP连接MySQL数据库
Posted 北温如言
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JSP连接MySQL数据库相关的知识,希望对你有一定的参考价值。
步骤
- 创建JSP项目
- 创建数据库
- 导入mysql的jar包文件
- 使用Java连接数据库执行增删改查
创建JSP项目
使用Eclipse创建一个jsp项目
创建数据库
我使用的是Navicat Premium 15来对数据库进行操作
1.点击连接,选择MySQL,连接所需要的数据库
2.只需要填写主机名、端口号、用户名以及密码就可以了,点击连接,便可以连接到数据库信息(前提是你的电脑上必须已经安装了MySQL数据库)
3.右击❶处,选择创建数据库,根据你的选择,起一个数据库的名字,设置数据库的字符集
4.双击你新建的数据库,在表中新建表,设置需要的字段以及表名,保存即可
导入MySQL的jar包文件
MySQL的jar包有两种,一个是5.1.4的版本,另一个是8.0.29的版本,这次我使用jar包5.1.4的版本,因为新版本已经更新了连接语句,之后有机会再补充。
把jar包直接拖动到该目录下就可以使用
拖进去后,直接点击OK就可以了
使用Java连接数据库执行增删改查
新建一个jsp文件,先将sql的Java包导入文件中
<%@ page import="java.sql.*" %>
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/test";
String name="root";
String password = "123456";
Connection conn = DriverManager.getConnection(url,name,password);
首先使用Class.forName(“com.mysql.jdbc.Driver”)去加载MySQL的驱动,再使用DriverManager.getConnection()去创建数据库连接语句,并返回一个Connection类型的对象
DriverManager.getConnection()的内容需要地址、用户名、以及密码。用户名和密码是数据库连接时使用的用户名和密码,地址则是jdbc:mysql://localhost:3306/数据库名,MySQL这个地址是固定的,数据库名是你想连接的数据库名字
Statement stmt = conn.createStatement();
这条语句用来创建一个用来处理sql语句的对象,之后就可以进行增删改查了
查询
String sql="select * from student";
ResultSet rs = stmt.executeQuery(sql);
while(rs.next())
out.println(rs.getString("name"));
out.println(rs.getString("age"));
创建一个查询语句,student是我数据库中的表名.
再使用之前创建的stmt对象,使用stmt.executeQuery(sql)查询数据表中的信息,并将返回的数据集合成一个ResultSe对象
ResultSe中会有一个next()方法,从返回的数据中,一行一行的输出信息。但是还是用通过列名获取到相应数值。即用rs(ResultSe对象)getString(“列名”)获取该行的列名值。
增加
String sname;
int sage;
String sql = "insert into student values('"+sname+"','"+sage+"')";
int count = stmt.executeQuery(sql);
sname和sage都可以根据自己以及数据库要求修改,语句可以在我这个语句上修改一下。
执行完stmt.executeQuery(sql)语句后,返回一个int类型的数值,操作正常时返回值为1.
删除
String sql = "delete from student where sname = '"+ sname +"'";
在删除数据上,其他操作与增加相同,只有在sql语句上不相同,其他一样。同样,提交完数据后,也是返回一个int类型的数值,1代表成功。
修改
String sname;
int age;
String sql = "update student set sname=?,sage=? where sname=?";
pstmt=conn.prepareStatement(sql);
pstmt.setString(1,sname);
pstmt.setInt(2,sage);
pstmt.setString(3,sname);
int count = pstmt.executeUpdate();
在修改数据库中,我采用的是占位符填充数据。这可以快速的向sql语句填充信息,一个?就是一个数据的位置。
pstmt.set类型(位置(从1开始),数据信息),要向里面填充什么类型的数据,就用set什么类型的数据函数。参数有两个,第一个是第几个占位符,第二个是要填充的数据。
**注意:**在填充完sql语句后,使用executeUpdate()语句进行更新,而不是之前使用的executeQuery()语句执行语句。
Jsp实现注册登录(连接Mysql)
Jsp实现注册登录(连接mysql)
最近在学jsp连接数据库,存个档吧
- 先在mysql里创建一个数据库
- 创建表
- 写一个用户注册的页面
registered.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>注册</title>
</head>
<body>
<form method="post" action="zc.jsp">
输入用户名:<input type="text" name="username"><br>
输入密码:<input type="text" name="userpwd"><br>
确认密码:<input type="text" name="cuserpwd"><br>
<input type="submit" value="注册">
</form>
</body>
</html>
- 读取用户的信息写入到数据库,完成注册
zc.jsp
<%@ page import="java.sql.Connection" %>
<%@ page import="java.sql.Statement" %>
<%@ page import="java.sql.DriverManager" %>
<%@ page import="java.sql.SQLException" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
//获取用户输入信息
request.setCharacterEncoding("utf-8");
String username=request.getParameter("username");
String userpwd=request.getParameter("userpwd");
String cuserpwd=request.getParameter("cuserpwd");
//判断两次密码是否相同
if (cuserpwd.equals(userpwd))
Connection conn = null;
Statement stmt = null;
try
//连接驱动
Class.forName("com.mysql.jdbc.Driver");
catch (ClassNotFoundException e)
e.printStackTrace();
//建立数据库连接
String url="jdbc:mysql://localhost:3306/bookstore_demo";
//数据库账号
String user="root";
//数据库密码
String upwd="lj20011028";
try
conn= DriverManager.getConnection(url,user,upwd);
//创建发射器
stmt=conn.createStatement();
//创建sql语句
String sql="insert into yonghu(username,userpwd) value ('"+username+"','"+userpwd+"')";
//发送sql语句并接收结果
int count = stmt.executeUpdate(sql);
if (count>0)
out.print("注册成功");
out.print("<a href='logoin.jsp'>登录</a>");
else
out.print("注册失败");
//关闭资源
stmt.close();
conn.close();
catch (SQLException e)
e.printStackTrace();
else
out.print("注册失败");
%>
</body>
</html>
- 再写一个用户登录界面
logoin.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>logoin</title>
</head>
<body>
<form action="logoin_yz.jsp" method="post">
用户名:<input type="text" name="username"><br>
密码:<input type="password" name="userpwd" ><br>
<input type="submit" value="登录">
</form>
</body>
</html>
- 获取用户输入的信息,在数据库中查询有相同记录则登陆成功
logoin_yz.jsp
<%@ page import="java.sql.*" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title></title>
</head>
<body>
<%
//获取用户输入信息
request.setCharacterEncoding("utf-8");
String username=request.getParameter("username");
String userpwd=request.getParameter("userpwd");
Connection conn = null;
Statement stmt = null;
try
//连接驱动
Class.forName("com.mysql.jdbc.Driver");
catch (ClassNotFoundException e)
e.printStackTrace();
//建立数据库连接
String url = "jdbc:mysql://localhost:3306/bookstore_demo";
//数据库账号
String uname="root";
//数据库密码
String upwd="lj20011028";
try
conn = DriverManager.getConnection(url, uname, upwd);
//创建发射器
stmt = conn.createStatement();
//创建sql语句
String sql = "select*from bookstore_demo.yonghu where username='"+username+"' and userpwd='"+userpwd+"'";
//发送sql语句并接收结果
ResultSet rs = stmt.executeQuery(sql);
if (rs.next())
out.print("登陆成功");
else
out.print("登陆失败");
rs.close();
catch (SQLException e)
e.printStackTrace();
%>
</body>
</html>
- 运行
从注册页面开始运行
若两次密码输入不相同则提示注册失败
若两次密码输入相同则提示注册成功
在mysql中可以通过查询查看获取的用户信息
注册成功点击登录跳转到登陆界面
输入注册的用户名和密码即可登陆成功
若输入的用户名与密码不匹配则登录失败
以上是关于JSP连接MySQL数据库的主要内容,如果未能解决你的问题,请参考以下文章