2025年3月26日 星期三 甲辰(龙)年 月廿五 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 软件应用 > 数据库 > 其它数据库

JDBC 使用说明

时间:02-14来源:作者:点击数:40

JDBC API 允许用户访问任何形式的表格数据,尤其是存储在关系数据库中的数据。

执行流程:

  • 连接数据源,如:数据库。
  • 为数据库传递查询和更新指令。
  • 处理数据库响应并返回的结果。

JDBC 架构

分为双层架构和三层架构。

双层

Two-tier-Architecture-for-Data-Access

作用:此架构中,Java Applet 或应用直接访问数据源。

条件:要求 Driver 能与访问的数据库交互。

机制:用户命令传给数据库或其他数据源,随之结果被返回。

部署:数据源可以在另一台机器上,用户通过网络连接,称为 C/S配置(可以是内联网或互联网)。

三层

Three-tier-Architecture-for-Data-Access

侧架构特殊之处在于,引入中间层服务。

流程:命令和结构都会经过该层。

吸引:可以增加企业数据的访问控制,以及多种类型的更新;另外,也可简化应用的部署,并在多数情况下有性能优势。

历史趋势: 以往,因性能问题,中间层都用 C 或 C++ 编写,随着优化编译器(将 Java 字节码 转为 高效的 特定机器码)和技术的发展,如EJB,Java 开始用于中间层的开发这也让 Java 的优势突显出现出来,使用 Java 作为服务器代码语言,JDBC随之被重视。

JDBC 编程步骤

加载驱动程序:

  • Class.forName(driverClass)
  • //加载MySql驱动
  • Class.forName("com.mysql.jdbc.Driver")
  • //加载Oracle驱动
  • Class.forName("oracle.jdbc.driver.OracleDriver")

获得数据库连接:

  • DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/imooc", "root", "root");

创建Statement\PreparedStatement对象:

  • conn.createStatement();
  • conn.prepareStatement(sql);

完整实例

  • import java.sql.Connection;
  • import java.sql.DriverManager;
  • import java.sql.ResultSet;
  • import java.sql.Statement;
  • public class DbUtil {
  • public static final String URL = "jdbc:mysql://localhost:3306/imooc";
  • public static final String USER = "liulx";
  • public static final String PASSWORD = "123456";
  • public static void main(String[] args) throws Exception {
  • //1.加载驱动程序
  • Class.forName("com.mysql.jdbc.Driver");
  • //2. 获得数据库连接
  • Connection conn = DriverManager.getConnection(URL, USER, PASSWORD);
  • //3.操作数据库,实现增删改查
  • Statement stmt = conn.createStatement();
  • ResultSet rs = stmt.executeQuery("SELECT user_name, age FROM imooc_goddess");
  • //如果有数据,rs.next()返回true
  • while(rs.next()){
  • System.out.println(rs.getString("user_name")+" 年龄:"+rs.getInt("age"));
  • }
  • }
  • }

增删改查

  • public class DbUtil {
  • public static final String URL = "jdbc:mysql://localhost:3306/imooc";
  • public static final String USER = "liulx";
  • public static final String PASSWORD = "123456";
  • private static Connection conn = null;
  • static{
  • try {
  • //1.加载驱动程序
  • Class.forName("com.mysql.jdbc.Driver");
  • //2. 获得数据库连接
  • conn = DriverManager.getConnection(URL, USER, PASSWORD);
  • } catch (ClassNotFoundException e) {
  • e.printStackTrace();
  • } catch (SQLException e) {
  • e.printStackTrace();
  • }
  • }
  • public static Connection getConnection(){
  • return conn;
  • }
  • }
  • //模型
  • package liulx.model;
  • import java.util.Date;
  • public class Goddess {
  • private Integer id;
  • private String user_name;
  • private Integer sex;
  • private Integer age;
  • private Date birthday; //注意用的是java.util.Date
  • private String email;
  • private String mobile;
  • private String create_user;
  • private String update_user;
  • private Date create_date;
  • private Date update_date;
  • private Integer isDel;
  • //getter setter方法。。。
  • }
  • //---------dao层--------------
  • package liulx.dao;
  • import liulx.db.DbUtil;
  • import liulx.model.Goddess;
  • import java.sql.Connection;
  • import java.sql.ResultSet;
  • import java.sql.SQLException;
  • import java.sql.Statement;
  • import java.util.ArrayList;
  • import java.util.List;
  • public class GoddessDao {
  • //增加
  • public void addGoddess(Goddess g) throws SQLException {
  • //获取连接
  • Connection conn = DbUtil.getConnection();
  • //sql
  • String sql = "INSERT INTO imooc_goddess(user_name, sex, age, birthday, email, mobile,"+
  • "create_user, create_date, update_user, update_date, isdel)"
  • +"values("+"?,?,?,?,?,?,?,CURRENT_DATE(),?,CURRENT_DATE(),?)";
  • //预编译
  • PreparedStatement ptmt = conn.prepareStatement(sql); //预编译SQL,减少sql执行
  • //传参
  • ptmt.setString(1, g.getUser_name());
  • ptmt.setInt(2, g.getSex());
  • ptmt.setInt(3, g.getAge());
  • ptmt.setDate(4, new Date(g.getBirthday().getTime()));
  • ptmt.setString(5, g.getEmail());
  • ptmt.setString(6, g.getMobile());
  • ptmt.setString(7, g.getCreate_user());
  • ptmt.setString(8, g.getUpdate_user());
  • ptmt.setInt(9, g.getIsDel());
  • //执行
  • ptmt.execute();
  • }
  • public void updateGoddess(){
  • //获取连接
  • Connection conn = DbUtil.getConnection();
  • //sql, 每行加空格
  • String sql = "UPDATE imooc_goddess" +
  • " set user_name=?, sex=?, age=?, birthday=?, email=?, mobile=?,"+
  • " update_user=?, update_date=CURRENT_DATE(), isdel=? "+
  • " where id=?";
  • //预编译
  • PreparedStatement ptmt = conn.prepareStatement(sql); //预编译SQL,减少sql执行
  • //传参
  • ptmt.setString(1, g.getUser_name());
  • ptmt.setInt(2, g.getSex());
  • ptmt.setInt(3, g.getAge());
  • ptmt.setDate(4, new Date(g.getBirthday().getTime()));
  • ptmt.setString(5, g.getEmail());
  • ptmt.setString(6, g.getMobile());
  • ptmt.setString(7, g.getUpdate_user());
  • ptmt.setInt(8, g.getIsDel());
  • ptmt.setInt(9, g.getId());
  • //执行
  • ptmt.execute();
  • }
  • public void delGoddess(){
  • //获取连接
  • Connection conn = DbUtil.getConnection();
  • //sql, 每行加空格
  • String sql = "delete from imooc_goddess where id=?";
  • //预编译SQL,减少sql执行
  • PreparedStatement ptmt = conn.prepareStatement(sql);
  • //传参
  • ptmt.setInt(1, id);
  • //执行
  • ptmt.execute();
  • }
  • public List<Goddess> query() throws SQLException {
  • Connection conn = DbUtil.getConnection();
  • Statement stmt = conn.createStatement();
  • ResultSet rs = stmt.executeQuery("SELECT user_name, age FROM imooc_goddess");
  • List<Goddess> gs = new ArrayList<Goddess>();
  • Goddess g = null;
  • while(rs.next()){
  • g = new Goddess();
  • g.setUser_name(rs.getString("user_name"));
  • g.setAge(rs.getInt("age"));
  • gs.add(g);
  • }
  • return gs;
  • }
  • public Goddess get(){
  • Goddess g = null;
  • //获取连接
  • Connection conn = DbUtil.getConnection();
  • //sql, 每行加空格
  • String sql = "select * from imooc_goddess where id=?";
  • //预编译SQL,减少sql执行
  • PreparedStatement ptmt = conn.prepareStatement(sql);
  • //传参
  • ptmt.setInt(1, id);
  • //执行
  • ResultSet rs = ptmt.executeQuery();
  • while(rs.next()){
  • g = new Goddess();
  • g.setId(rs.getInt("id"));
  • g.setUser_name(rs.getString("user_name"));
  • g.setAge(rs.getInt("age"));
  • g.setSex(rs.getInt("sex"));
  • g.setBirthday(rs.getDate("birthday"));
  • g.setEmail(rs.getString("email"));
  • g.setMobile(rs.getString("mobile"));
  • g.setCreate_date(rs.getDate("create_date"));
  • g.setCreate_user(rs.getString("create_user"));
  • g.setUpdate_date(rs.getDate("update_date"));
  • g.setUpdate_user(rs.getString("update_user"));
  • g.setIsDel(rs.getInt("isdel"));
  • }
  • return g;
  • }
  • }
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门