Java语言实现对MySql数据库中数据的增删改查操作的代码

 更新时间:2016年12月27日 16:32:29   作者:i逆天耗子丶  
这篇文章主要介绍了Java语言实现对MySql数据库中数据的增删改查操作的代码,实现了连接数据库,和数据库的增删改查操作,有兴趣的可以了解一下。

简单说操作的步骤:

1.连接数据库

2.将SQL语句发送到数据库

3.执行SQL语句

这里举个例子:

在一个数据库中有个students表,表中有学号(Id),姓名(Name),性别(Sex),地址(Address),电话(Phone),专业(Dept)。

这里把这个表写成一个学生信息类(Info_student)

(请先确保看了例子说明,不然代码有的地方可能看不明白)

要实现操纵我们首先得连接数据库,因为每个操作都要进行连接操作,所以我们直接把连接的操作封装在一个类中,需要连接的时候直接调用可。

数据库连接类:

import java.sql.Connection; 
import java.sql.DriverManager; 
 
public class DB_Helper { 
 
  public static Connection connect = null; 
 
  static { 
    try { 
      Class.forName("com.mysql.jdbc.Driver"); // 加载MYSQL JDBC驱动程序 
      // 观察以下2个语句的差别, 
      // connect = 
      // DriverManager.getConnection("jdbc:mysql://localhost:3306/students", "root", ""); 
      connect = DriverManager.getConnection( 
          "jdbc:mysql://localhost:3306/students?useUnicode=true&characterEncoding=utf-8", "root", ""); 
 
      System.out.println("Success loading Mysql Driver!"); 
    } catch (Exception e) { 
      System.out.print("Error loading Mysql Driver!"); 
      e.printStackTrace(); 
    } 
  } 
 
  public static Connection getConnection() { 
    return connect; 
  } 
} 

数据库已经连接了,那么接下来就是要发送SQL语句和执行语句。

发送语句用到了PreparedStatement对象和Connection对象的操作prepareStatement()

执行语句用到PreparedStatement对象的操作execute()

提示:以下是一些对象的说明,可以先看代码,遇到的时候再回来看。

************************

PreparedStatement

表示预编译的 SQL 语句的对象。

SQL 语句被预编译并存储在 PreparedStatement 对象中。然后可以使用此对象多次高效地执行该语句。

*************************

Connection

与特定数据库的连接(会话)。在连接上下文中执行 SQL 语句并返回结果。

Connection 对象的数据库能够提供描述其表、所支持的 SQL 语法、存储过程、此连接功能等等的信息。

**********************

以下代码是要实现在数据库中实现学生信息的增删改查操作。

一、增

public void add(Info_student student) throws SQLException{ 
  // 与特定数据库的连接(会话)。 
  Connection conn = (Connection) DB_Helper.getConnection(); 
   
  String sql = "insert into student(Sno,Sname,Ssex,Saddress,Sphone,Sdept) values(?,?,?,?,?,?)"; 
   
  // 创建一个 PreparedStatement 对象来将参数化的 SQL 语句发送到数据库。 
  PreparedStatement ptmt = (PreparedStatement) conn.prepareStatement(sql); 
  /* 
   * void setBigDecimal(int parameterIndex,BigDecimal x)throws SQLException 
   * 将指定参数设置为给定 Java String 值。在将此值发送给数据库时,驱动程序将它转换成一个 SQL VARCHAR 
   * 或 LONGVARCHAR 值(取决于该参数相对于驱动程序在 VARCHAR 值上的限制的大小)。 
   */ 
  ptmt.setString(1, student.getId()); 
  ptmt.setString(2, student.getName()); 
  ptmt.setString(3, student.getSex()); 
  ptmt.setString(4, student.getAddress()); 
  ptmt.setString(5, student.getPhone()); 
  ptmt.setString(6, student.getDept()); 
   
  // 在此 PreparedStatement 对象中执行 SQL 语句 
  ptmt.execute(); 
} 

二、删

public void delete(String id) throws SQLException{ 
  Connection conn = (Connection) DB_Helper.getConnection(); 
  String sql = "delete from student where Sno=?"; 
  PreparedStatement ptmt = (PreparedStatement) conn.prepareStatement(sql); 
   
  ptmt.setString(1, id); 
   
  ptmt.execute(); 
} 

三、改

public void update(Info_student student) throws SQLException{ 
  Connection conn = (Connection) DB_Helper.getConnection(); 
  String sql = "update student set Sname=?,Ssex=?,Saddress=?,Sphone=?,Sdept=? where Sno=?"; 
 
  PreparedStatement ptmt = (PreparedStatement) conn.prepareStatement(sql); 
  ptmt.setString(1, student.getName()); 
  ptmt.setString(2, student.getSex()); 
  ptmt.setString(3, student.getAddress()); 
  ptmt.setString(4, student.getPhone()); 
  ptmt.setString(5, student.getDept()); 
  ptmt.setString(6, student.getId()); 
 
  ptmt.execute(); 
} 

四、查

public Info_student search(String id) throws SQLException{ 
  Info_student student = null; 
   
  Connection conn = (Connection) DB_Helper.getConnection(); 
  String sql = "select * from student where Sno=?"; 
  PreparedStatement ptmt = (PreparedStatement) conn.prepareStatement(sql); 
   
  ptmt.setString(1, id); 
   
  /* 
   * ResultSet executeQuery()throws SQLException 
   * 在此 PreparedStatement 对象中执行 SQL 查询,并返回该查询生成的 ResultSet 对象。 
   */ 
   
  /* 
   * public interface ResultSet extends Wrapper 
   * 表示数据库结果集的数据表,通常通过执行查询数据库的语句生成。 ResultSet 对象具有指向其当前数据行的光标。 
   * 最初,光标被置于第一行之前。next 方法将光标移动到下一行;因为该方法在 ResultSet 对象没有下一行时 
   * 返回 false,所以可以在 while 循环中使用它来迭代结果集。 
   * 
   */ 
  ResultSet rs = ptmt.executeQuery(); 
 
  /* 
   * boolean next()throws SQLException 
   * 将光标从当前位置向前移一行。 
   * ResultSet 光标最初位于第一行之前; 
   * 第一次调用 next 方法使第一行成为当前行; 
   * 第二次调用使第二行成为当前行,依此类推。 
   */ 
 
  while(rs.next()){ 
    student = new Info_student(); 
    student.setId(rs.getString("Sno")); 
    student.setName(rs.getString("Sname")); 
    student.setSex(rs.getString("Ssex")); 
    student.setAddress(rs.getString("Saddress")); 
   
    student.setPhone(rs.getString("Sphone")); 
    student.setDept(rs.getString("Sdept")); 
  } 
  return student; 
   
} 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Mybatis批量插入更新xml方式和注解方式的方法实例

    Mybatis批量插入更新xml方式和注解方式的方法实例

    这篇文章主要给大家介绍了关于Mybatis批量插入更新xml方式和注解方式的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Mybatis具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-12-12
  • GateWay路由规则与动态路由详细介绍

    GateWay路由规则与动态路由详细介绍

    这篇文章主要介绍了GateWay路由规则与GateWay动态路由,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-09-09
  • SpringBoot中缓存注解的使用详解

    SpringBoot中缓存注解的使用详解

    为了实现缓存,Spring Boot 提供了一些缓存注解,可以方便地实现缓存功能,这篇文章主要介绍了SpringBoot中常用的缓存注解的使用方法,需要的可以参考一下
    2023-06-06
  • SpringMVC 参数绑定意义及实现过程解析

    SpringMVC 参数绑定意义及实现过程解析

    这篇文章主要介绍了SpringMVC 参数绑定意义及实现过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • Spring Boot快速入门教程

    Spring Boot快速入门教程

    本篇文章主要介绍了Spring Boot快速入门教程,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-01-01
  • Spring Boot 在启动时进行配置文件加解密的方法详解

    Spring Boot 在启动时进行配置文件加解密的方法详解

    这篇文章主要介绍了Spring Boot 在启动时进行配置文件加解密的方法,本文通过实例给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-06-06
  • Java两个乒乓球队比赛名单问题(判断素数)

    Java两个乒乓球队比赛名单问题(判断素数)

    两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单
    2017-02-02
  • Java数据结构专题解析之栈和队列的实现

    Java数据结构专题解析之栈和队列的实现

    从数据结构的定义看,栈和队列也是一种线性表。其不同之处在于栈和队列的相关运算具有特殊性,只是线性表相关运算的一个子集。更准确的说,一般线性表的插入、删除运算不受限制,而栈和队列上的插入删除运算均受某种特殊限制。因此,栈和队列也称作操作受限的线性表
    2021-10-10
  • springboot配置redis过程详解

    springboot配置redis过程详解

    这篇文章主要介绍了springboot配置redis过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09
  • JavaWeb入门:HttpResponse和HttpRequest详解

    JavaWeb入门:HttpResponse和HttpRequest详解

    这篇文章主要介绍了Django的HttpRequest和HttpResponse对象,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
    2021-07-07

最新评论