JDBC操作数据库基本步骤

基于JDBC对mysql数据库进行各种操作

JDBC(Java DataBase Connectivity):java连接数据库技术,是一项由sun(java创始公司)发布的用于java连接数据库的通用标准,这套标准由一系列的接口(Connection,Statement,ResultSet等)构成,旨在屏蔽不同数据库之间的差异,使得开发者无需关注不同数据库系统之间的差异,简化java连接数据库的步骤。

JDBC操作数据库通常分为六个通用步骤:
  1. 加载驱动(JDBC4之后可以省略,需要导入相关数据库的驱动包)
  2. 获取连接
  3. 获取执行sql命令的对象
  4. 执行
  5. 处理结果
  6. 关闭资源

实例:

//1.加载驱动(驱动数据库:有三种方式,常用反射加载)
Class.forName("com.mysql.jdbc.Driver");

//2.获取连接对象(建立从java到数据库的连接通道)
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "root", "123456");

//3.获取处理命令的对象(通过连接对象向数据库发送并执行sql语句)
Statement stat = conn.createStatement();

//4.执行sql操作(以查询操作为例)
ResultSet rs = stat.executeQuery("select name ,phone  from dept where no=1");
//boolean f = stat.execute("insert into dept values(7,'事业部','10986')");
//int i = stat.executeUpdate("delete from dept where dno=1");
//int i = stat.executeUpdate("update dept set tel='123456' where dno=2");

//5.处理结果
while(rs.next()){
    //已经获取一行数据
    String name = rs.getString("name");
    int no = rs.getInt("no");
    String tel = rs.getString("phone");
    System.out.println(no+"/"+name+"/"+tel);
}

//6.资源关闭
stat.close();
conn.close();

Statement接口主要用于执行sql语句对象,内部包含一些执行方法:

  • execute():用执行所有的sql语句,对于有结果集的sql会返回true,否则返回false
  • executeUpdate():用于执行DML语句中的更新语句(insert,delete,update),返回结果为影响的数据行数
  • executeQuery():用于执行查询语句(select),返回一个ResultSet(结果集)对象,内部存储的为查询的数据-

但是通过Statement执行SQL语句时,会存在SQL注入的风险,因此JDBC还提供了另一个接口PreparedStatement,用于解决这一问题,使用PreparedStatement对象可以对sql语句预编译,从而防止sql注入。

String sql = "select * from emp where eno=?";
Connection conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/mydb", "root", "123456");
PreparedStatement ps = conn.prepareStatement(sql);
ps.setObject(1, 1001);//表示为从左起的第一个?赋值
ResultSet rs = ps.executeQuery();
if(rs.next()){
    int no = rs.getInt("eno");
    String name = rs.getString("ename");
    BigDecimal sal = rs.getBigDecimal("sal");
    Date date = rs.getDate("hiredate");//java.sql.Date
    int dno = rs.getInt("dno");
    System.out.println(no+"/"+name+"/"+sal+"/"+date+"/"+dno);
}else{
    System.out.println("未查询到数据");
}
rs.close();
ps.close();
conn.close();

运行程序要确保mysql数据库里有对应的表格。

在执行某些插入语句时,由于数据库表的某些列设置过自动生成(主键列),因此使用JDBC代码执行插入操作时,也能同时获取被插入的数据自动生成的列值;这里需要在调用prepareStatement方法时,除了传入sql语句外,还需要传入一个参数:Statement.RETURN_GENERATED_KEYS,以表示要获取返回的自动生成的列值(主键)。

PreparedStatement ps = conn.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值