思路分析:实现增删改查功能需要的步骤大致一样如下:
加载数据库驱动---->连接数据库---->创建语句容器(存储实现相关功能的SQL语句)---->执行SQL语句---->得到结果---->关闭数据库连接。
可以把四种不同的功能写在同一UserDao类内,然后写分别四个jsp文件实现java代码,再写四个jsp文件实现HTML代码。使代码清晰易懂且简练。
使用Java Bean。建立一个User类避免麻烦的获取参数。
package com.aaa.bean;
public class User {
private int id;
private String username;
private String password;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
代码简化:加载数据库驱动、连接数据库、关闭数据库驱动均为重复代码,可以封装到一个类中,用到时直接调用。
以下为封装的类
package com.aaa.conn;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class DBconn {
public static final String dbDriver="com.mysql.jdbc.Driver";
public static final String dbURL="你数据库的地址";
public static final String dbUsername="你数据库的用户名";
public static final String dbPwd="你数据库的密码";
public static Connection getConntion() {
Connection conn = null;
try {
Class.forName(dbDriver);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
conn = DriverManager.getConnection(dbURL,dbUsername,dbPwd);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return conn;
}
public static void close(Connection conn,PreparedStatement pt, ResultSet rs) {
//关闭数据库连接
if (rs!=null) {
try {
rs.close();
}catch(SQLException e){
//
}
}
if (pt != null) {
try {
pt.close();
} catch (SQLException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public static void close(Connection conn,PreparedStatement pt) {
//关闭数据库连接
if (pt != null) {
try {
pt.close();
} catch (SQLException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
一、实现查询功能
需要做的事有:
1、建一个query.jsp
2、将查询的方法写在已建好的UserDao中(Java Resources----src----右击新建包以.dao结尾----包下再建UserDao.java文件)
以下是查询方法代码(写在UserDao中):
public ArrayList queryAll() {
ArrayList users = new ArrayList();
conn=DBconn.getConntion();
try {
String sql="select * from admin_info";
pt = conn.prepareStatement(sql);
rs = pt.executeQuery();
while (rs.next()) {
User user = new User();
user.setUsername(rs.getString("name"));
user.setPassword(rs.getString("pwd"));
users.add(user);
System.out.println("成功查询到内容");
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
DBconn.close(conn,pt);
return users;
}
以下是jsp文件代码:
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@page import="com.aaa.bean.*,com.aaa.dao.*"%>
<%@page import="java.sql.*"%>
<%@page import="java.util.*"%>
Insert title here
<%
UserDao userDao=new UserDao();
ArrayListusers =userDao.queryAll();
//遍历结果集
for(int i=0;i");
}
%>
1.使用泛型,避免代码重复运行。
2.将SQL语句定义成字符串易于理解。
3.pt和rs分别为PreparedStatement和ResultSet两方法的对象,是我整个UserDao的全局变量,已经全部赋了初始值
4.代码将数据库中的所有的用户信息(用户名和密码)打印到数组中,最后通过jsp文件输出到页面。
PS:DBconn是我封装的方法的类名(目前有创建数据库连接,关闭数据库两种方法。关闭数据库方法已经重载过。)
二、实现新增功能
需要做的事有:
1、建一个doRegister.jsp
2、建一个Register.jsp
3、将新增的方法写在已建好的UserDao中
以下是新增方法代码(写在UserDao中):
public boolean insert(User user) {
boolean t=false;
conn=DBconn.getConntion();
String sql="insert into admin_info(name,pwd) values(?,?)";
try {
pt=conn.prepareStatement(sql);
pt.setString(1, user.getUsername());
pt.setString(2, user.getPassword());
int i=pt.executeUpdate();
if(i>0) {
t=true;
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
DBconn.close(conn,pt,rs);
return t;
}
以下是doRegister代码:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@page import="com.aaa.bean.*" %>
<%@page import="com.aaa.dao.*" %>
Insert title here
<%
//1.获取用户输入的用户名和密码
String username = request.getParameter("username");
String password = request.getParameter("password");
//2.把数据封装到user对象
User user= new User();
user.setUsername(username);
user.setPassword(password);
//3.把数据写入数据库
%>
<% UserDao userDao=new UserDao();
boolean t = userDao.insert(user);
if(t){
out.print("添加成功!!");
}
else{
out.print("添加失败!!");
}
%>
立即登录
以下是Register代码:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
注册
1.通过Register获取用户输入要新增的的用户名和密码。
2.通过doRegister调用写在UserDao里的insert方法将获取到的新增用户的用户名和密码写入数据库。并给予提示。
3.UserDao中的insert方法采用Boolean型,通过返回值的判断进行数据的添加。
三、实现删除功能
需要做的事有:
1、建一个doDelete.jsp
2、建一个Delete.jsp
3、将删除的方法写在已建好的UserDao中
以下是删除方法代码(写在UserDao中):
public boolean delete(User user) {
boolean t=false;
conn=DBconn.getConntion();
String sql="delete from admin_info where name=? and pwd=?";
try {
pt=conn.prepareStatement(sql);
pt.setString(1, user.getUsername());
pt.setString(2, user.getPassword());
int i=pt.executeUpdate();
if(i>0) {
t=true;
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
DBconn.close(conn,pt,rs);
return t;
}
以下是doDelete代码:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@page import="com.aaa.bean.*" %>
<%@page import="com.aaa.dao.*" %>
Insert title here
<%
//1.获取用户输入的用户名和密码
String username = request.getParameter("username");
String password = request.getParameter("password");
//2.把数据封装到user对象
User user= new User();
user.setUsername(username);
user.setPassword(password);
//3.把数据写入数据库
%>
<% UserDao userDao=new UserDao();
boolean t = userDao.delete(user);
if(t){
out.print("删除成功!!");
}
else{
out.print("删除失败!!");
}
%>
返回登录页面
以下是Delete代码:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
删除
1.通过Delete获取用户输入要删除的的用户名和密码。
2.通过doDelete调用写在UserDao里的delete方法将获取到的用户名和密码从数据库删除。并给予提示。
3.UserDao中的delete方法采用Boolean型,通过返回值的判断进行数据的删除。
四、实现修改功能
PS:未完待续。。新手上路,水平不足请见谅。