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

作者:i逆天耗子丶 时间:2024-01-21 21:19:43 

简单说操作的步骤:

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;

}

来源:http://blog.csdn.net/qq_34594236/article/details/53894905

标签:java,mysql
0
投稿

猜你喜欢

  • gorm golang 并发连接数据库报错的解决方法

    2024-01-24 07:54:44
  • Matplotlib条形图之分组条形图和堆叠条形图详解

    2021-08-10 15:16:24
  • 发布淘宝开源编辑器 KISSY Editor 1.0.0

    2009-10-27 16:20:00
  • 解决Go gorm踩过的坑

    2024-04-25 15:30:06
  • MySQL中count(*)、count(1)和count(col)的区别汇总

    2024-01-23 07:13:43
  • php下载远程大文件(获取远程文件大小)的实例

    2024-05-03 15:29:47
  • Go语言使用sort包对任意类型元素的集合进行排序的方法

    2023-09-02 03:55:18
  • 网页设计的色彩思考

    2007-10-19 13:30:00
  • python网络爬虫精解之Beautiful Soup的使用说明

    2021-02-21 15:20:48
  • Flask框架请求钩子与request请求对象用法实例分析

    2021-11-23 20:14:48
  • 如何使用SublimeText3配置 PHP IDE环境

    2024-04-30 09:58:51
  • python实现学员管理系统

    2021-05-31 07:02:45
  • JS模拟简易滚动条效果代码(附demo源码)

    2024-04-23 09:22:45
  • 超级链接中MailTo的语法

    2008-08-29 13:00:00
  • 常用CSS缩写语法总结章

    2009-03-17 13:26:00
  • YUI学习笔记(4)

    2009-03-10 18:25:00
  • 修改python plot折线图的坐标轴刻度方法

    2021-06-24 09:09:43
  • MSSQL数据类型及长度限制详细说明

    2024-01-25 06:01:09
  • Python基于requests实现模拟上传文件

    2023-09-30 01:42:05
  • Python3中的re.findall()方法及re.compile()

    2023-04-12 11:54:47
  • asp之家 网络编程 m.aspxhome.com