本文使用的数据库为 Mysql:10.1.13-MariaDB ,编译器为 MyEclipse:2017 CI 6
数据库用户名:root 密码:123
数据库名:jsp_user 表名:users
表字段:
name | varchar | not null | primary key |
password | varchar | not null | |
telphone | varchar(11) | not null | primary key |
package edu.mju.conn;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
/**
* @author wang_y_p
*
*/
public class ConnDB {
Connection conn=null;//创建Connection对象,用于存储数据库连接
int i=0;//用于返回受影响的行数 (int)
PreparedStatement pstmt=null;//SQL语句已预编译并存储在PreparedStatement对象中。 然后可以使用该对象多次有效地执行此语句。
ResultSet rs=null;//用于存储ResultSet类型的结果集
static String url="jdbc:mysql://localhost:3306/jsp_user";//连接的数据库的名字:jsp_user
static String user="root";//连接的数据库的用户名root
static String password="123";//连接的数据库的密码123
//连接数据库的方法
public static Connection getConnection(){
Connection conn=null;//创建Connection对象,用于存储数据库连接
try {
Class.forName("com.mysql.jdbc.Driver");//注册驱动类
}catch(ClassNotFoundException e){//没有找到驱动类时
System.out.print("无法找到驱动类");
}
try {
//DriverManager:用于管理一组JDBC驱动程序的基本服务。getConnection:尝试建立与给定数据库URL的连接
conn=DriverManager.getConnection(url, user, password);
} catch (SQLException e) {
e.printStackTrace();
}
if(conn==null){
System.out.print("数据库连接失败");
}
return conn;
}
//登陆查询
public ResultSet doQuery(String sql,String name,String password){
try{
conn=ConnDB.getConnection();//调用数据库连接getConnection
//conn.prepareStatement(sql):创建一个 PreparedStatement对象,用于将参数化的SQL语句发送到数据库。
pstmt=conn.prepareStatement(sql);//将用户定义的sql发送到上面conn的prepareStatement方法,存储在一开始定义的PreparedStatement pstmt对象中
pstmt.setString(1, name);//设置sql语句第一个 ? 的值
pstmt.setString(2, password);//设置sql语句第二个 ? 的值
rs=pstmt.executeQuery();//执行PreparedStatement的executeQuery()方法 ,结果是一个ResultSet结果集
}catch (SQLException e) {
e.printStackTrace();
}
return rs;//返回ResultSet类型的rs
}
//检测用户名
public ResultSet doQuery(String sql,String name)
{
try{
conn=ConnDB.getConnection();//调用数据库连接getConnection
//conn.prepareStatement(sql):创建一个 PreparedStatement对象,用于将参数化的SQL语句发送到数据库。
pstmt=conn.prepareStatement(sql);//将用户定义的sql发送到上面conn的prepareStatement方法,存储在一开始定义的PreparedStatement pstmt对象中
pstmt.setString(1, name);//设置sql语句第一个 ? 的值
rs=pstmt.executeQuery();//执行PreparedStatement的executeQuery()方法 ,结果是一个ResultSet结果集
}catch (SQLException e) {
e.printStackTrace();
}
return rs;//返回ResultSet类型的rs
}
//检测用户名、验证手机
public ResultSet doVerify(String sql,String name,String telphone)
{
try{
conn=ConnDB.getConnection();//调用数据库连接getConnection
//conn.prepareStatement(sql):创建一个 PreparedStatement对象,用于将参数化的SQL语句发送到数据库。
pstmt=conn.prepareStatement(sql);//将用户定义的sql发送到上面conn的prepareStatement方法,存储在一开始定义的PreparedStatement pstmt对象中
pstmt.setString(1, name);//设置sql语句第一个 ? 的值
pstmt.setString(2, telphone);//设置sql语句第二个 ? 的值
rs=pstmt.executeQuery();//执行PreparedStatement的executeQuery()方法 ,结果是一个ResultSet结果集
}catch (SQLException e) {
e.printStackTrace();
}
return rs;//返回ResultSet类型的rs
}
//密码重置
public int doChange(String sql,String name,String password){
try{
conn=ConnDB.getConnection();//调用数据库连接getConnection
//conn.prepareStatement(sql):创建一个 PreparedStatement对象,用于将参数化的SQL语句发送到数据库。
pstmt=conn.prepareStatement(sql);//将用户定义的sql发送到上面conn的prepareStatement方法,存储在一开始定义的PreparedStatement pstmt对象中
pstmt.setString(1, password);//设置sql语句第一个 ? 的值
pstmt.setString(2, name);//设置sql语句第二个 ? 的值
i=pstmt.executeUpdate();//执行PreparedStatement的executeUpdate()方法,返回的是受影响的行数 (int)
}catch (SQLException e) {
e.printStackTrace();
}
return i;//返回的是受影响的行数 (int)
}
//注册
public int doUpdate(String sql,String name,String password,String telphone){
try{
conn=ConnDB.getConnection();//调用数据库连接getConnection
//conn.prepareStatement(sql):创建一个 PreparedStatement对象,用于将参数化的SQL语句发送到数据库。
pstmt=conn.prepareStatement(sql);//将用户定义的sql发送到上面conn的prepareStatement方法,存储在一开始定义的PreparedStatement pstmt对象中
pstmt.setString(1, name);//设置sql语句第一个 ? 的值
pstmt.setString(2, password);//设置sql语句第二个 ? 的值
pstmt.setString(3, telphone);//设置sql语句第三个 ? 的值
i=pstmt.executeUpdate();//执行PreparedStatement的executeUpdate()方法,返回的是受影响的行数 (int)
}catch (SQLException e) {
e.printStackTrace();
}
return i;//返回的是受影响的行数 (int)
}
}
这里要注意:
(1)url:jdbc:mysql://localhost:3306/xxx xxx是你的数据库名
(2)user:root 一般mysql默认用户名root
(3)password:XXX 用户名自定义
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
用户登录界面
欢迎登录
这里要注意:
(1)