1.关于JDBC
JDBC(Java DataBase Connectivity)是一种用于执行SQL语句的Java API,是Java和数据库之间的一个桥梁,它由一组用Java语言编写的类和接口组成,各种不同类型的数据库都有相应的实现。
JDBC为开发人员提供了一个标准的API,据此可以构建更高级的工具和接口,是数据库开发人员能够使用java API编写数据库应用程序,并且可以跨平台运行,且不受数据录供应商的限制。
JDBC为我么提供了java连接数据库的驱动,而这个驱动也是由java开发出来的,可以通过这个驱动,使用java连接到数据库,对数据库进行相应的管理操作。
2.对数据库进行增添记录的操作
以一个简单注册界面的实现为例
具体步骤:
(1)打开xampp,启动Mysql
方法一:直接双击应用程序,在MySQL后面点击“start”
方式二:通过命令行的方式打开
(2)打开Navicat,选择一个数据库建立相应的表用来存放注册信息,并设计表中的字段。(也可以使用数据库中之前建好的表)
(3)打开eclipse,在当前项目中的WebContent目录下新建一个jsp文件,添加代码,使得登陆界面显示与数据库中表里面设计的字段相对应
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>用户注册</title>
</head>
<body>
<form action="/blog/SignupServlet" method=post >
邮 箱:<input name="email" type="text" placeholder="填写邮箱" /><br/><p></p>
手机号码:<input name="phoneNumber" type="text" /><br /><p></p>
登录名称:<input name="username" type="text" /><br /><p></p>
显示昵称:<input name="nickname" type="text" /><br /><p></p>
密 码:<input name="password" type="password" /><br /><p></p>
确认密码:<input name="confirmPassword" type="password" /><br />
<p><input type="submit" /></p>
</form>
</body>
</html>
显示效果:
(4)新建一个Servlet文件,命名为SignupServlet,与上面jsp文件代码中选择的action 的文件名一致(也可以在新建jsp文件的时候建好),并且上面代码中选择的method为post,所以我们选择在Servlet中Dopost()方法中编辑源代码。
先对参数的添加条件进行设置:
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
// 定义变量接收请求参数
String email = request.getParameter("email");
String phoneNumber = request.getParameter("phoneNumber");
String username = request.getParameter("username");
String nickname = request.getParameter("nickname");
String password = request.getParameter("password");
String confirmPassword = request.getParameter("confirmPassword");
// 为添加的信息设置限制条件
boolean error = false;
String errorMsg = "";
//方式一:导入专用jar包(commons-lang3-3.9.jar)方可调用StringUtils.方法
if (StringUtils.isEmpty(email)) {
error = true;
errorMsg = "邮箱不允许为空";
}else if (StringUtils.isEmpty(password)) {
error = true;
errorMsg = "密码不允许为空";
} else if (!StringUtils.equals(password, confirmPassword)) {
error = true;
errorMsg = "两次输入的密码不一致";
}
//方式二:
// if (email == null) {
// error = true;
// errorMsg = "邮箱不允许为空";
// } else if (password == null) {
// error = true;
// errorMsg = "密码不允许为空";
// } else if (!password.equals(confirmPassword)) {
// error = true;
// errorMsg = "两次输入的密码不一致";
// }
if (error) {
request.setAttribute("errorMsg", errorMsg);
RequestDispatcher dispatcher = request.getRequestDispatcher("error.jsp");//如果出现错误则跳转到error.jsp页面
dispatcher.forward(request, response);
return;
}
error.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>提示</title>
</head>
<body>
<!-- EL表达式 -->
提示: ${errorMsg}
</body>
</html>
以下内容十分重要!!!
JDBC编程步骤:
① 导入专用jar包(不同的数据库可能需要的jar包不一样),我这里导入的是mysql-connector-java-5.1.9.jar
将下载好的包copy到WebContent/Web-INF/lib下,如果没有完成,则会抛出 ClassNotFoundException。
② 初始化驱动类com.mysql.jdbc.Driver ,该类就在导入的jar包中。
③ 建立JDBC与数据库之间的连接,此处需要提供数据库所在电脑的IP地址,数据库的端口号,数据库名(使用的表所在的数据库),编码方式(UTF-8),以及数据库的账号和密码。
②③只要是需要连接数据库,对其进行管理操作,基本都会用到,所以可以将其封装在一个工具类中,用时直接调用,减少麻烦
package com.dlj.utils;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class DBUtil {
public static Connection getConnection() {
Connection conn = null;
try {
Class.forName("com.mysql.jdbc.Driver");// 初始化驱动类com.mysql.jdbc.Driver,将类加载到JVM中
conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test?characterEncoding=UTF-8", "root", "");//与数据库建立连接
} catch (ClassNotFoundException e) {//捕获初始化异常
e.printStackTrace();
} catch (SQLException e) {//捕获连接异常
e.printStackTrace();
}
return conn;//返回连接
}
}
④创建Statement接口
⑤执行SQL语句
⑤关闭连接
代码:
Connection connection = null;
Statement statement=null;
try {
connection = (Connection) DBUtil.getConnection();//调用封装的工具方法,连接数据库
statement = (Statement) connection.createStatement();//创建Statement接口
String sql = "insert into t_user(email, phone_number, username, nickname, password, create_time, update_time) values('"
+ email + "', '" + phoneNumber + "', '" + username + "', '" + nickname + "', '" + password+ "', now(), now())";// 准备sql语句
System.out.println(sql);
boolean success = statement.execute(sql);//执行sql语句
System.out.println("执行结果:" + success);//打印执行结果,注意:当打印结果为false,不表示执行失败,具体可查看Statement调用方法的源码
//捕获try操作中的异常
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
errorMsg = e.getMessage();
//关闭,必须得有
} finally {
if (connection != null) {
try {
connection.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if (statement != null) {
try {
statement.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
request.setAttribute("errorMsg", errorMsg);
RequestDispatcher dispatcher = request.getRequestDispatcher("error.jsp");
dispatcher.forward(request, response);
完成后,在注册界面进行操作,命令行显示结果:
查看表结果: