当前位置: 移动技术网 > IT编程>开发语言>Java > JDBC 使用说明(流程、架构、编程)

JDBC 使用说明(流程、架构、编程)

2019年07月22日  | 移动技术网IT编程  | 我要评论

幻灯片,金库网论坛,西安隐形耳机

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

执行流程:

•连接数据源,如:数据库。

•为数据库传递查询和更新指令。

•处理数据库响应并返回的结果。

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

双层

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

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

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

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

三层

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

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

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

历史趋势: 以往,因性能问题,中间层都用 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;
 }
}

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网