JDBC数据库应用开发
来源:互联网 发布:淘宝网店招的图片尺寸 编辑:程序博客网 时间:2024/05/18 17:40
JDBC技术原理
JDBC是Sun公司提出的Java API中的一部分,其含义是用Java语言来访问数据库,是java程序访问数据库的标准接口。在使用JDBC访问不同的数据库时,需要加载数据库的驱动程序,这些驱动程序由数据库厂商提供。下面给出JDBC连接各种主流数据库的连接方式:
1、连接Oracle 8/8i/9i/10g/11g(thin模式)
Class.forName("oracle.JDBC.driver.OracleDriver").newInstance();String url="JDBC:oracle:thin:@localhost:1521:orcl" //orcl为Oracle数据库的SIDString user="test";String password="test";Connection con=DriverManager.getConnection(url,user,password);2、连接DB2数据库
Class.forName("com.ibm.db2.jcc.DB2Driver");String url="JDBC:db2://localhost:5000/testDb";String user="test"; String password="test";Connection con=DriverManager.getConnection(url,user,password);3、连接MySQL数据库
Class.forName("com.mysql.jdbc.Driver");String url="JDBC:mysql://localhost:8080/testDB";String user="test"; String password="test";Connection con=DriverManager.getConnection(url,user,password);4、连接SQL Server2000数据库
Class.forName("com.microsoft.JDBC.sqlserver.SQLServerDriver");String url="JDBC:microsoft:sqlserver://localhost:1433;DatabaseName=testDb";String user="test"; String password="test";Connection con=DriverManager.getConnection(url,user,password);5、连接PostgreSQL数据库
Class.forName("org.postgresql.Driver");String url="JDBC:postgresql://localhost/testDb";String user="test"; String password="test";Connection con=DriverManager.getConnection(url,user,password);6、连接Access数据库
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");String url="JDBC:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ="+application.getRealPath("/Data/testDb/mdb");Connection conn=DriverManager.getConnection(url,"","");7、连接Sybase数据库
Class.forName("com.sybase.JDBC.SybDriver");String url="JDBC:sybase:Tds:localhost:5007/testDb";Properties pro=System.getProperties();pro.put("user","userId");pro.put("password","user_password");Connection con=DriverManager.getConnection(url,pro);8、连接informix数据库
Class.forName("com.informix.JDBC.ifxDriver");String url="JDBC:informix-sqli:localhost:1533/testDb:INFORMIXSERVER=myserver"user=testUser;password=testpassword"; Connection con=DriverManager.getConnection(url);JDBC连接数据库的过程很简单,以连接MySQL数据库为例,具体步骤如下:
(1)加载MySQL数据库连接的驱动程序。可以到MySQL的官网上下载该驱动程序jar包,然后把jar包放到工程项目的WEB-INF/lib目录下。加载数据库驱动程序使用的是Class.forName()方法,调用此方法会将制定的类加载到JVM中,其关键代码如下:
Class.forName("com.mysql.jdbc.Driver")(2) 设置访问数据库的用户名、密码及连接URL。不同的数据库其连接URL有所不同,但基本格式都是“JDBC协议+数据库的IP地址+数据库端口号+数据库名”。关键代码如下:
String user = "root";String password = "root";String url = "jdbc:mysql://localhost:3306/database";(3)通过JDBC API的DriverManager类的getConnection()方法来创建与数据库之间的连接,getConnection()方法需要接受的参数有URL、用户名和密码,关键代码如下:
Connection conn = DriverManager.getConnction(url,user,password);(4)建立连接之后,使用该连接对象创建用户操作SQL语句的PreparedStatement对象,使用的是prepareStatement()方法,关键代码如下:
PreparedStatement ps = conn.prepareStatement(sql);(5)关闭数据库连接,释放系统资源,代码如下:
conn.close();
User.java ---- 用户实体类
package com.kj.test;public class User {private Long id;/** 姓名 */private String name;/** 性别 */private String sex;/** 年龄 */private String age;public Long getId() {return id;}public void setId(Long id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public String getAge() {return age;}public void setAge(String age) {this.age = age;}}DBConn.java ---- MySQL数据库连接类
package com.kj.test;import java.sql.Connection;import java.sql.DriverManager;public class DBConn {/** 加载连接 */private static Connection conn = null;/** MySQL数据库驱动名 */private static final String DRIVERNAME = "com.mysql.jdbc.Driver";/** 用户 */private static final String USERNAME = "root";/** 密码 */private static final String PASSWORD = "root";/** 连接URL */private static final String URL = "jdbc:mysql://localhost:3306/test";public static Connection getConn() { try {Class.forName(DRIVERNAME);conn = DriverManager.getConnection(URL, USERNAME, PASSWORD);} catch (Exception e) {e.printStackTrace();}return conn;}public static void main(String[] args) {//测试是否已经连接成功Connection conn = DBConn.getConn();System.out.println("conn:"+conn);}}UserDao.java ---- 持久化User模型到数据库
package com.kj.test;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.util.ArrayList;import java.util.List;public class UserDao {private static UserDao userDao = null;/*** * 单例模式获取userDao * @return */public static UserDao getInstance() {if (userDao == null) {userDao = new UserDao();}return userDao;}/** * 保存一个user对象到数据库 * @param user * @return */public boolean saveUser(User user) {boolean result = false;Connection conn = null;PreparedStatement ps = null;try {conn = DBConn.getConn();String sql = "insert into user(name,sex,age) values(?,?,?)";ps = conn.prepareStatement(sql);ps.setString(1, user.getName());ps.setString(2, user.getSex());ps.setString(3, user.getAge());int n = ps.executeUpdate();if (n == 1) {result = true; //保存成功}} catch (Exception e) {e.printStackTrace();} finally {try {ps.close();conn.close();} catch (Exception e) {e.printStackTrace();}}return result;}/** * 从数据库中加载表数据放入对象列表 * @return */public List<User> getUserList() {List<User> userList = new ArrayList<User>();Connection conn = null;PreparedStatement ps = null;ResultSet rs = null;try {conn = DBConn.getConn();String sql = "select * from user";ps = conn.prepareStatement(sql);rs = ps.executeQuery();while (rs.next()) {User user = new User();user.setId(rs.getLong("id"));user.setName(rs.getString("name"));user.setSex(rs.getString("sex"));user.setAge(rs.getString("age"));userList.add(user);}} catch (Exception e) {e.printStackTrace();} finally {try {rs.close();ps.close();conn.close();} catch (Exception e) {e.printStackTrace();}}return userList;}/** * 修改user对象信息并持久化到数据库 * @param args */public boolean updateUser(User user) {boolean result = false;Connection conn = null;PreparedStatement ps = null;try {conn = DBConn.getConn();String sql = "update user set age = ?, sex = ? where name = ?";ps = conn.prepareStatement(sql);ps.setString(1, user.getAge());ps.setString(2, user.getSex());ps.setString(3, user.getName());int n = ps.executeUpdate();if (n == 1) {result = true; //更新成功}} catch (Exception e) {e.printStackTrace();} finally {try {ps.close();conn.close();} catch (Exception e) {e.printStackTrace();}}return result;}/** * 删除一条user对象对应的数据库记录 * @param args */public boolean deleteUser(User user) {boolean result = false;Connection conn = null;PreparedStatement ps = null;try {conn = DBConn.getConn();String sql = "delete from user where name = ?";ps = conn.prepareStatement(sql);ps.setString(1, user.getName());int n = ps.executeUpdate();if (n == 1) {result = true; //删除成功}} catch (Exception e) {e.printStackTrace();} finally {try {ps.close();conn.close();} catch (Exception e) {e.printStackTrace();}}return result;}public static void main(String[] args) {UserDao ud = UserDao.getInstance();User user = new User();user.setAge("1岁");user.setSex("男");user.setName("测试");ud.saveUser(user);ud.deleteUser(user);}}MyFilter.java ---- 过滤JSP页面传递过来的中文字符
package com.kj.test;import java.io.IOException;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;public class MyFilter implements Filter {private String encode;public MyFilter() { }public void destroy() {}public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {if (encode != null) {request.setCharacterEncoding(encode);response.setContentType("text/html;charset="+encode);}chain.doFilter(request, response);}public void init(FilterConfig fConfig) throws ServletException {encode = fConfig.getInitParameter("encode");}}AddUserServlet.java ---- 添加用户Servlet
package com.kj.test;import java.io.IOException;import javax.servlet.RequestDispatcher;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class AddUserServlet extends HttpServlet {private static final long serialVersionUID = 1L; public AddUserServlet() { super(); }protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {String name = request.getParameter("name");String sex = request.getParameter("sex");String age = request.getParameter("age");User user = new User();user.setAge(age);user.setName(name);user.setSex(sex);UserDao userDao = UserDao.getInstance();boolean result = userDao.saveUser(user); String url;if (result) {url = "/showUser";} else {url = "error.jsp";}RequestDispatcher dispathcer = request.getRequestDispatcher(url);dispathcer.forward(request, response);}}ShowUserServlet.java ---- 显示用户列表Servlet
package com.kj.test;import java.io.IOException;import java.util.List;import javax.servlet.RequestDispatcher;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class ShowUserServlet extends HttpServlet {private static final long serialVersionUID = 1L; public ShowUserServlet() { super(); }protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {UserDao userDao = UserDao.getInstance();List<User> userList = userDao.getUserList();request.setAttribute("users", userList);String url = "manageUser.jsp";RequestDispatcher dispathcer = request.getRequestDispatcher(url);dispathcer.forward(request, response);}}web.xml ---- 配置Servlet和过滤器Filter
<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <display-name>servletTest</display-name> <!-- servlet配置示例 --> <servlet> <!-- 增加用户Servlet --> <servlet-name>AddUserServlet</servlet-name> <servlet-class>com.kj.test.AddUserServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>AddUserServlet</servlet-name> <url-pattern>/addUser</url-pattern> </servlet-mapping> <servlet> <!-- 显示用户Servlet --> <servlet-name>ShowUserServlet</servlet-name> <servlet-class>com.kj.test.ShowUserServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>ShowUserServlet</servlet-name> <url-pattern>/showUser</url-pattern> </servlet-mapping> <!-- filter配置示例 --> <filter> <filter-name>MyFilter</filter-name> <filter-class>com.kj.test.MyFilter</filter-class> <init-param> <param-name>encode</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>MyFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list></web-app>index.jsp ---- 添加用户入口页面
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>添加用户入口</title></head><body><form action="addUser" method="post"><div style="margin-top:100px;text-align:center;margin-bottom:10px;font-size:24px;font-weight:bolder">添加用户页面</div><table align="center" cellpadding="0" cellspacing="0" ><tr><td style="text-align:right">姓名:</td><td style="text-align:left"><input type="text" name="name" value="" /></td></tr><tr><td style="text-align:right">性别:</td><td style="text-align:left"><input type="radio" name="sex" value="男" />男 <input type="radio" name="sex" value="女" />女</td></tr><tr><td style="text-align:right">年龄:</td><td style="text-align:left"><input type="text" name="age" value="" /></td></tr></table><div style="margin-top:10px;text-align:center;"><input type="submit" value="增加"/></div></form></body></html>manageUser.jsp ---- 用户管理列表页面
<%@page import="com.kj.test.User"%><%@page import="java.util.List"%><%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%><%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%><%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>管理用户页面</title></head><body><div style="margin-top:100px;text-align:center;margin-bottom:10px;font-size:24px;font-weight:bolder">管理用户页面</div><table align="center" border="1" cellpadding="0" cellspacing="0" ><c:set var="userList" value="${requestScope.users }" /><c:if test="${not empty userList }"><tr><th style="text-align:center;width:100px;">主键ID</th><th style="text-align:center;width:100px;">姓名</th><th style="text-align:center;width:100px;">性别</th><th style="text-align:center;width:100px;">年龄</th></tr><c:forEach items="${userList }" var="user"><tr><td style="text-align:center;width:100px;"><c:out value="${user.id }"/></td><td style="text-align:center;width:100px;"><c:out value="${user.name }"/></td><td style="text-align:center;width:100px;"><c:out value="${user.sex }"/></td><td style="text-align:center;width:100px;"><c:out value="${user.age }"/></td></tr></c:forEach></c:if><c:if test="${empty userList }"><div style="margin-top:20px;text-align:center;margin-bottom:10px;font-size:18px;font-weight:bolder;color:red">对不起,当前还没有用户记录,请先返回添加页面进行添加。</div></c:if></table><div style="margin-top:20px;text-align:center;"><a href="index.jsp">返回添加页面</a></div></body></html>error.jsp ---- 如果出错则跳到此提示页面
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>错误页面</title></head><body><div style="color:red;text-align:center;margin-top:100px;font-size: 20px;">操作失败,<a href="index.jsp">返回用户添加页面</a>或者<a href="manageUser.jsp">返回用户管理页面</a></div></body></html>
2 0
- JDBC数据库应用开发
- 使用JDBC开发简单的数据库应用
- JDBC连接数据库应用
- JDBC应用开发
- jdbc连接各种数据库方式列表 And Servlet开发中JDBC的高级应用
- jdbc连接各种数据库方式列表 And Servlet开发中JDBC的高级应用
- JDBC数据库开发技术
- JAVA JDBC数据库开发
- Java----JDBC数据库开发
- jdbc数据库开发
- jdbc三层应用开发MVC
- java开发JDBC连接数据库
- java开发JDBC连接数据库
- JAVA开发JDBC连接数据库
- java开发JDBC连接数据库
- 使用JDBC开发数据库应用程序
- JDBC 连接数据库开发步骤
- 实战 Eclipse ,Jigloo, PostgreSQL,JDBC 开发数据库查询应用系统起步
- 三点...和两点加箭头..<的含义和区别
- wamp的初始编码设置及乱码原因
- 2015
- Java之LinkedList源码解读(JDK 1.8)
- HDU 3032 Nim or not Nim?(博弈 SG打表找规律)
- JDBC数据库应用开发
- java 权限修饰符
- typedef与typedef struct用法详解
- FFT在图像处理中的简单应用
- Linux学习系列-浅析EXT2文件系统
- HDU 1978 How many ways (dfs 记忆化搜索)
- Ubuntu安装mysql
- Android API Guides---Debugging Web Apps
- Android 学习记录-SQLite