JDBC连接数据库之一:添加数据
本例两个页面,一个页面接受数据1.htm,一个页面接受数据并存入数据库1.jsp
新建的MySQl数据库person
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
create table person
(
id int(3) auto_increment not null primary key,
name varchar(10),
password varchar(20),
age int(3)
);
1.htm代码
2.jsp代码
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>
<%!
String DBDRIVER = "com.mysql.jdbc.Driver" ;
String DBURL = "jdbc:mysql://127.0.0.1:3306/demo_db?user=root&password=123456" ;
Connection conn = null ;
Statement stmt = null ;
PreparedStatement pstmt = null ;
String sql = null ;
%>
<%
request.setCharacterEncoding("GB2312") ;
String name = request.getParameter("uname") ;
String password = request.getParameter("upass") ;
int age = 0 ;
try
{
age = Integer.parseInt(request.getParameter("age")) ;
}
catch(Exception e)
{}
sql = "INSERT INTO person (name,password,age) VALUES (?,?,?)" ;
sql1 = "INSERT INTO person (name,password,age) VALUES ('"+name+"','"+password+"',"+age+")" ;
try
{
Class.forName(DBDRIVER) ;//步骤一、加载驱动程序
conn = DriverManager.getConnection(DBURL) ;//步骤二、连接数据库
pstmt = conn.prepareStatement(sql) ;//步骤三、操作数据库,添加数据
pstmt.setString(1,name) ;
pstmt.setString(2,password) ;
pstmt.setInt(3,age) ;
pstmt.executeUpdate() ;
// 或者
stmt = conn.createStatement();
stmt.executeUpdate(sql1);
out.println("数据添加成功败!!!") ;
}
catch(Exception e)
{
out.println("数据库驱动程序加载失败!!!") ;
e.printStackTrace();
}
try
{
pstmt.close() ;//步骤 四:关闭数据库
stmt.close();
conn.close() ;
}
catch(Exception e)
{
out.println("数据库关闭失败!!!") ;
e.printStackTrace();
}
%>
步骤一、加载驱动程序
Class.forName(DBDRIVER);
步骤二、连接数据库
Connection conn=DriverManager.getConnection(DBURL);
步骤三、操作数据库
Statement 类一般常用三个方法executeUpdate(),executeQuery(),execute().
executeUpdate()执行增、删、改
executeQuery()执行查询,返回为结果集
stmt = conn.createStatement();
String sql1 = "INSERT INTO person (name,password,age) VALUES ('casa2','123456',28)" ;
String sql2 = "SELECT FROM person";
stmt.executeUpdate(sql1);
ResultSet rs = stmt.executeQuery(sql2);
String sql3= "INSERT INTO person (name,password,age) VALUES (?,?,?)" ;
pstmt = conn.preparedStatment(sql3)
pstmt.setString(1,"casa2");
pstmt.setString(2,"123456");
pstmt.setInt(3,28);
pstmt.executeUpdate();
步骤四、关闭数据库
JDBC连接数据库之二:列表显示数据
本例将数据库中的数据列表显示,只有一个jsp文件2.jsp
2.jsp
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>
<%--
此代码主要进行查询操作
--%>
<%!
String DBDRIVER = "com.mysql.jdbc.Driver" ;
String DBURL = "jdbc:mysql://127.0.0.1:3306/demo_db?user=root&password=123456" ;
Connection conn = null ;
Statement stmt = null ;
String sql = null ;
ResultSet rs = null ;
%>
<%
try
{
Class.forName(DBDRIVER) ;//步骤一、加载驱动程 序
conn = DriverManager.getConnection(DBURL) ;//步骤二、连接数据库
stmt = conn.createStatement() ;//步骤 三、操作数据库,返回结果集
sql = "SELECT id,name,password,age FROM person" ;
rs = stmt.executeQuery(sql) ;
%>
ID |
姓名 |
密码 |
年龄 |
<%
while(rs.next())
{
int id = rs.getInt(1) ;
String name = rs.getString(2) ;
String password = rs.getString(3) ;
int age = rs.getInt(4) ;
%>
<%=id%> |
<%=name%> |
<%=password%> |
<%=age%> |
<%
}
%>
<%
}
catch(Exception e)
{
out.println("操作数据库失败!!!") ;
}
try
{
rs.close() ;//步骤四:关闭数据库
stmt.close() ;
conn.close() ;
}
catch(Exception e)
{
out.println("数据库关闭失败!!!") ;
}
%>
JDBC连接数据库之三:JavaBean实现增、删、改、查的一个实例
本实例通过JavaBean进行数据的增、删、改、查,使用到的页面和JavaBean见下表所示:
源码下载 ch06-3(749.74K)
序号
文件名
类型
功能描述
1
index.html
页面
显示主菜单
2
addStudent.jsp
页面
添加学生信息页面
3
addStudent_do.jsp
页面
调用JavaBean处 理添加
4
deleteStudent.jsp
页面
列表显示所以学生,选择删除的学生
5
deleteStudent_do.jsp
页面
调用JavaBean处 理删除
6
modifyStudent.jsp
页面
列表显示所以学生,选择修改的学生
7
modifyStudent_pro.jsp
页面
修改某一学生信息
8
modifyStudent_do.jsp
页面
调用JavaBean处 理修改
9
viewStudent.jsp
页面
列表显示所有学生信息
10
searchStudentBySid.jsp
页面
根据学号进行查询
11
DataBaseConnection.java
JavaBean
连接数据库
12
Student.java
JavaBean
封装学生信息的JavaBean
13
StudentUtil.java
JavaBean
实现学生信息的增、删、改、查
一、首先建立数据库:
在MySQL数据里建立jsp_db数据库-student表
USE jsp_db;
DROP TABLE IF EXISTS student;
CREATE TABLE student (
sid varchar(20) NOT NULL,
name varchar(30) default NULL,
sex int(1) default NULL,
phone varchar(16) default NULL,
birth date default NULL,
Constraint primary key pk_student(sid)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312;
二、在Eclipse里新建web工程ch6-3;
在src文件新建ch6包;
把三个Java类拷贝到ch6里,更改DataBaseConnection.java的连接MySQL字符串;
把mysql-connector-java-5.1.5-bin.jar拷贝到WEB-INF/lib文件夹里;
其他JSP页面文件拷贝到WebRoot里,部署项目,重启Tomcat服务器,实例代码就能运行了。
三、代码分析
1.index.html
学生管理
学生管理
增加学生
删除学生
更改学生信息
查看所有学生
2.addStudent.jsp
<%@ page contentType="text/html; charset=gb2312" language="java" %>
增加学生
<% request.setCharacterEncoding("gb2312");%>
增加一个新的学生
3.addStudent_do.jsp
<%@ page contentType="text/html; charset=gb2312" language="java" import="ch6.*" %>
增加学生
<% request.setCharacterEncoding("gb2312");%>
//id:表示所建的JavaBean实例的名称;class:表示这个JavaBean的类名
//通过内省机制,根据请求的参数名称,自动设定与JavaBean相同属性名称的值
<%studentUtil.addStudent(student);%>
增加学生成功
返回
4.deleteStudent.jsp
<%@ page contentType="text/html; charset=gb2312" language="java" import="ch6.*,java.util.*" %>
删除学生
<% request.setCharacterEncoding("gb2312");%>
删除一个学生
学号 | 姓名 | 性别< /td> | 电话 | 出生日期 | 删除< /td>
|
<%
Collection students=studentUtil.getAllStudent();
Iterator it=students.iterator();
while(it.hasNext())
{
Student temp=(Student)it.next();
out.println("");
out.println(""+temp.getSid()+" | ");
try
{
String sex = (temp.getSex()==1)?"男":"女";
out.println(""+temp.getName()+" | ");
out.println(""+sex+" | ");
out.println(""+temp.getPhone()+" | ");
out.println(""+temp.getBirth()+" | ");
}
catch(Exception e)
{
e.printStackTrace();
}
out.println("删除");
out.println(" |
");
}
%>
返回
5.deleteStudent_do.jsp
<%@ page contentType="text/html; charset=gb2312" language="java" import="ch6.*" %>
删除成功
<% request.setCharacterEncoding("gb2312");%>
<%
studentUtil.deleteStudent((String)request.getParameter("sid"));
response.sendRedirect("deleteStudent.jsp");
%>
6.modifyStudent.jsp
<%@ page contentType="text/html; charset=gb2312" language="java" import="ch6.*,java.util.*" %>
选择要更改的学生
<% request.setCharacterEncoding("gb2312");%>
选择要更改的学生
学号 | 姓名 | 性别< /td> | 电话 | 出生日期 | 更改< /td>
|
<%
Collection students=studentUtil.getAllStudent();
Iterator it=students.iterator();
while(it.hasNext())
{
Student temp=(Student)it.next();
out.println("");
out.println(""+temp.getSid()+" | ");
try
{
String sex = (temp.getSex()==1)?"男":"女";
out.println(""+temp.getName()+" | ");
out.println(""+sex+" | ");
out.println(""+temp.getPhone()+" | ");
out.println(""+temp.getBirth()+" | ");
}
catch(Exception e)
{
e.printStackTrace();
}
out.println("更改");
out.println(" |
");
}
%>
返回
7.modifyStudent_pro.jsp
<%@ page contentType="text/html; charset=gb2312" language="java" import="ch6.*" %>
<% request.setCharacterEncoding("gb2312");%>
更改学生信息
<%
String sid=request.getParameter("sid");
Student student=studentUtil.getStudentInfo(sid);
%>
更改一个学生
8.modifyStudent_do.jsp
<%@ page contentType="text/html; charset=gb2312" language="java" import="ch6.*" %>
更改学生
<% request.setCharacterEncoding("gb2312");%>
<%studentUtil.modifyStudent(student);%>
更改学生成功
返回
源码下载 ch06-3(749.74K)
JDBC连接数据库之三:JavaBean实现增、删、改、查的一个实例(续前)
9.viewStudent.jsp
<%@ page contentType="text/html; charset=gb2312" language="java" import="ch6.*,java.util.*" %>
查看所有的学生
<% request.setCharacterEncoding("gb2312");%>
查看所有的学生
学号 | 姓名 | 性别< /td> | 电话 | 出生日期 |
<%
Collection students=studentUtil.getAllStudent();
Iterator it=students.iterator();
while(it.hasNext())
{
Student temp=(Student)it.next();
out.println("");
out.println(""+temp.getSid()+" | ");
try
{
String sex = (temp.getSex()==1)?"男":"女";
out.println(""+temp.getName()+" | ");
out.println(""+sex+" | ");
out.println(""+temp.getPhone()+" | ");
out.println(""+temp.getBirth()+" | ");
}
catch(Exception e)
{
e.printStackTrace();
}
out.println("
");
}
%>
返回
10.searchStudentBySid.jsp
<%@ page contentType="text/html; charset=gb2312" language="java" import="ch6.*,java.util.*" %>
搜索结果
<% request.setCharacterEncoding("gb2312");%>
<% String sid=request.getParameter("sid");%>
查看学号为<%=sid%>的学生
学号 | 姓名 | 性别< /td> | 电话 | 出生日期 |
<%
Collection students=studentUtil.getStudentBySid(sid);
Iterator it=students.iterator();
while(it.hasNext())
{
Student temp=(Student)it.next();
out.println("");
out.println(""+temp.getSid()+" | ");
try
{
String sex = (temp.getSex()==1)?"男":"女";
out.println(""+temp.getName()+" | ");
out.println(""+sex+" | ");
out.println(""+temp.getPhone()+" | ");
out.println(""+temp.getBirth()+" | ");
}
catch(Exception e)
{
e.printStackTrace();
}
out.println("
");
}
%>
返回
11.DataBaseConnection.java
package ch6;
import java.sql.*;
//连接数据库的工具类。
public class DataBaseConnection
{
/**
*一个静态方法,返回一个数据库的连接。
*这样达到了对数据库连接统一控制的目的。
*/
public static Connection getConnection()
{
Connection con=null;
String CLASSFORNAME="com.mysql.jdbc.Driver";
String serverInfo="jdbc:mysql://127.0.0.1:3306/jsp_db?user=root&password=1234&useUnicode=true&characterEncoding=gb2312";
try
{
Class.forName(CLASSFORNAME);
con = DriverManager.getConnection(serverInfo);
}
catch(Exception e)
{
e.printStackTrace();
}
return con;
}
}
12.Student.java
package ch6;
import java.io.*;
public class Student implements Serializable {
/* 私有字段 */
private String sid;
private String name;
private int sex;//0:代表男 1:代表女
private String phone;
private String birth;
/* JavaBean属性访问方法 */
/** 共公方法 */
public String getBirth() {
return birth;
}
public String getName() {
return name;
}
public String getPhone() {
return phone;
}
public int getSex() {
return sex;
}
public String getSid() {
return sid;
}
public void setBirth(String birth) {
this.birth = birth;
}
public void setName(String name) {
this.name = name;
}
public void setPhone(String phone) {
this.phone = phone;
}
public void setSex(int sex) {
this.sex = sex;
}
public void setSid(String sid) {
this.sid = sid;
}
}
13.StudentUtil.java
package ch6;
import java.sql.*;
import java.util.*;
/**
* StudentUtil包含和Student表相关的操作
*/
public class StudentUtil {
private Connection con;
//构造方法,获得数据库的连接。
public StudentUtil() {
this.con = DataBaseConnection.getConnection();
}
/**
* 搜索所有的学生信息,返回由Student值对象组成的Collection
*/
public Collection getAllStudent() throws Exception {
Statement stmt = con.createStatement();
ResultSet rst = stmt.executeQuery("select * from student");
Collection ret = new ArrayList();//定义数组,存放VO对象实例
while (rst.next()) {
Student tempSt = new Student();//定义VO对象,将结果集中的每条记录赋值给VO对象
tempSt.setSid(rst.getString("sid"));
tempSt.setName(rst.getString("name"));
tempSt.setSex(rst.getInt("sex"));
tempSt.setPhone(rst.getString("phone"));
tempSt.setBirth(rst.getString("birth"));
ret.add(tempSt);//将VO对象加入数组
}
stmt.close();
con.close();
return ret;
}
/**
* 按照学生的学号查找学生,返回由Student值对象组成的Collection
*/
public Collection getStudentBySid(String sid) throws Exception {
Statement stmt = con.createStatement();
ResultSet rst = stmt.executeQuery("select * from student where sid='"
+ sid + "'");
Collection ret = new ArrayList();
while (rst.next()) {
Student tempSt = new Student();
tempSt.setSid(rst.getString("sid"));
tempSt.setName(rst.getString("name"));
tempSt.setSex(rst.getInt("sex"));
tempSt.setPhone(rst.getString("phone"));
tempSt.setBirth(rst.getString("birth"));
ret.add(tempSt);
}
stmt.close();
con.close();
return ret;
}
/**
* 添加一个学生,使用Student值对象作为参数传给这个方法。
*/
public void addStudent(Student student) throws Exception {
PreparedStatement pstmt = con
.prepareStatement("insert into student values(?,?,?,?,?)");
pstmt.setString(1, student.getSid());
pstmt.setString(2, student.getName());
pstmt.setInt(3, student.getSex());
pstmt.setString(4, student.getPhone());
pstmt.setString(5, student.getBirth());
pstmt.execute();
pstmt.close();
con.close();
}
/**
* 更改学生的信息,使用Student值对象作为参数传给这个方法。
*/
public void modifyStudent(Student student) throws Exception {
PreparedStatement pstmt = con
.prepareStatement("update student set name=?, sex=?,phone=?,birth=? where sid=?");
pstmt.setString(1, student.getName());
pstmt.setInt(2, student.getSex());
pstmt.setString(3, student.getPhone());
pstmt.setString(4, student.getBirth());
pstmt.setString(5, student.getSid());
pstmt.execute();
pstmt.close();
con.close();
}
/**
* 删除指定学号的学生
*/
public void deleteStudent(String sid) throws Exception {
Statement stmt = con.createStatement();
stmt.execute("delete from student where sid='" + sid + "'");
stmt.close();
con.close();
}
/**
* 返回给定学号的学生的信息,返回的是值对象
*/
public Student getStudentInfo(String sid) throws Exception {
Statement stmt = con.createStatement();
ResultSet rst = stmt.executeQuery("select * from student where sid='"
+ sid + "'");
Student student = null;
while (rst.next()) {
student = new Student();
student.setSid(rst.getString("sid"));
student.setName(rst.getString("name"));
student.setSex(rst.getInt("sex"));
student.setPhone(rst.getString("phone"));
student.setBirth(rst.getString("birth"));
}
stmt.close();
con.close();
return student;
}
public synchronized sta