JAVA访问数据库之增删改查(CRUD)

上一篇博客介绍了如何使用JAVA连接数据库,那么这一篇将继续为大家介绍如何使用JDBC对数据库的增删改查(CRUD)操作。
这一篇博客中的示例将使用上一篇中生成的H2数据库文件。

查询

查询在数据库的操作中是很重要的,我们把数据保存在数据库中,就是为了我们在需要的时候能够快速、高效的查询出来。

/**
    * 查询
    *
    * @throws Exception
    */
   public void query() throws Exception
   {
      Connection conn = getConnection();
      Statement statement = conn.createStatement();
      ResultSet resultSet = statement
            .executeQuery("SELECT USER_ID, USER_NAME FROM USER_INFO");
      System.out.printf("%20s %50s\n", "USER_ID", "USER_NAME");
      // 遍历结果集
      while (resultSet.next())
      {
         System.out.printf("%20s %50s\n", resultSet.getString("USER_ID"),
               resultSet.getString("USER_NAME"));
      }
      resultSet.close();
      statement.close();
      conn.close();
   }

   /**
    * 通过用户编号查询
    *
    * @param userId
    * @throws Exception
    */
   public void queryById(String userId) throws Exception
   {
      Connection conn = getConnection();
      // 动态参数使用PreparedStatement,使用Statement存在SQL注入风险
      PreparedStatement statement = conn
            .prepareStatement("SELECT USER_ID, USER_NAME FROM USER_INFO WHERE USER_ID = ?");
      statement.setString(1, userId);
      ResultSet resultSet = statement.executeQuery();
      System.out.printf("%20s %50s\n", "USER_ID", "USER_NAME");
      // 遍历结果集
      while (resultSet.next())
      {
         System.out.printf("%20s %50s\n", resultSet.getString("USER_ID"),
               resultSet.getString("USER_NAME"));
      }
      resultSet.close();
      statement.close();
      conn.close();
   }

修改

在这里,我讲增删改作为一类,同属于对数据库的修改操作,在例子中,也会发现,我们使用的方法完全相同,仅仅是SQL的区别。

/**
    * 修改
    *
    * @param userId
    * @param userName
    * @throws Exception
    */
   public void update(String userId, String userName) throws Exception
   {
      Connection conn = getConnection();
      // 动态参数使用PreparedStatement,使用Statement存在SQL注入风险
      PreparedStatement statement = conn
            .prepareStatement("UPDATE USER_INFO SET USER_NAME = ? WHERE USER_ID = ?");
      statement.setString(1, userName);
      statement.setString(2, userId);
      System.out.println("受影响的记录条数为:" + statement.executeUpdate());
      statement.close();
      conn.close();
   }

   /**
    * 清空
    */
   public void clear() throws Exception
   {
      Connection conn = getConnection();
      Statement statement = conn.createStatement();
      System.out.println("受影响的记录条数为:"
            + statement.executeUpdate("DELETE USER_INFO"));
      statement.close();
      conn.close();
   }

完整示例

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;

public class JDBCCRUDemo
{

   /**
    * 获得数据库连接
    *
    * @return
    * @throws Exception
    */
   public Connection getConnection() throws Exception
   {
      Class.forName("org.h2.Driver");
      return DriverManager.getConnection("jdbc:h2:h2.db", "test", "123");
   }

   /**
    * 查询
    *
    * @throws Exception
    */
   public void query() throws Exception
   {
      Connection conn = getConnection();
      Statement statement = conn.createStatement();
      ResultSet resultSet = statement
            .executeQuery("SELECT USER_ID, USER_NAME FROM USER_INFO");
      System.out.printf("%20s %50s\n", "USER_ID", "USER_NAME");
      // 遍历结果集
      while (resultSet.next())
      {
         System.out.printf("%20s %50s\n", resultSet.getString("USER_ID"),
               resultSet.getString("USER_NAME"));
      }
      resultSet.close();
      statement.close();
      conn.close();
   }

   /**
    * 通过用户编号查询
    *
    * @param userId
    * @throws Exception
    */
   public void queryById(String userId) throws Exception
   {
      Connection conn = getConnection();
      // 动态参数使用PreparedStatement,使用Statement存在SQL注入风险
      PreparedStatement statement = conn
            .prepareStatement("SELECT USER_ID, USER_NAME FROM USER_INFO WHERE USER_ID = ?");
      statement.setString(1, userId);
      ResultSet resultSet = statement.executeQuery();
      System.out.printf("%20s %50s\n", "USER_ID", "USER_NAME");
      // 遍历结果集
      while (resultSet.next())
      {
         System.out.printf("%20s %50s\n", resultSet.getString("USER_ID"),
               resultSet.getString("USER_NAME"));
      }
      resultSet.close();
      statement.close();
      conn.close();
   }

   /**
    * 添加
    *
    * @param userId
    * @param userName
    * @throws Exception
    */
   public void insert(String userId, String userName) throws Exception
   {
      Connection conn = getConnection();
      // 动态参数使用PreparedStatement,使用Statement存在SQL注入风险
      PreparedStatement statement = conn
            .prepareStatement("INSERT INTO USER_INFO(USER_ID, USER_NAME) VALUES(?, ?)");
      statement.setString(1, userId);
      statement.setString(2, userName);
      System.out.println("受影响的记录条数为:" + statement.executeUpdate());
      statement.close();
      conn.close();
   }

   /**
    * 修改
    *
    * @param userId
    * @param userName
    * @throws Exception
    */
   public void update(String userId, String userName) throws Exception
   {
      Connection conn = getConnection();
      // 动态参数使用PreparedStatement,使用Statement存在SQL注入风险
      PreparedStatement statement = conn
            .prepareStatement("UPDATE USER_INFO SET USER_NAME = ? WHERE USER_ID = ?");
      statement.setString(1, userName);
      statement.setString(2, userId);
      System.out.println("受影响的记录条数为:" + statement.executeUpdate());
      statement.close();
      conn.close();
   }

   /**
    * 清空
    */
   public void clear() throws Exception
   {
      Connection conn = getConnection();
      Statement statement = conn.createStatement();
      System.out.println("受影响的记录条数为:"
            + statement.executeUpdate("DELETE USER_INFO"));
      statement.close();
      conn.close();
   }

   public static void main(String[] args) throws Exception
   {
      JDBCCRUDemo demo = new JDBCCRUDemo();
      demo.insert("id111", "name111");
      demo.insert("id222", "name222");
      demo.insert("id333", "name333");
      demo.insert("id444", "name444");
      demo.insert("id555", "name555");
      demo.query();
      demo.queryById("id444");
      demo.update("id222", "name1234");
      demo.query();
      demo.clear();
   }
}

运行结果:
受影响的记录条数为:1
受影响的记录条数为:1
受影响的记录条数为:1
受影响的记录条数为:1
受影响的记录条数为:1
             USER_ID                                          USER_NAME
               id111                                            name111
               id222                                            name222
               id333                                            name333
               id444                                            name444
               id555                                            name555
             USER_ID                                          USER_NAME
               id444                                            name444
受影响的记录条数为:1
             USER_ID                                          USER_NAME
               id111                                            name111
               id333                                            name333
               id444                                            name444
               id555                                            name555
               id222                                           name1234
受影响的记录条数为:5

时间: 2024-08-02 22:19:35

JAVA访问数据库之增删改查(CRUD)的相关文章

java-不用数据库实现增删改查

问题描述 不用数据库实现增删改查 用java 代码实现 在内存中如何保存对象,修改对象的属性,删除一个对象 解决方案 保存对象:既然保存就是要存盘了,所以不可能只用内存,因为内存没有持久化.如果要保存对象到硬盘,可以用序列化(实现接口). 修改对象的属性:在有操作权限的情况下可以直接"对象.属性"修改,要是对象提供修改属性的方法也可以直接调用.如果又没访问权限,这--我猜是可行的. 删除对象:是回收对象所占的资源吧?java没有delete这种操作符,它是自动垃圾回收的,不同的虚拟机自

MySQL数据库学习笔记(十二)----开源工具DbUtils的使用(数据库的增删改查)

[正文] 这一周状态不太好,连续打了几天的点滴,所以博客中断了一个星期,现在继续. 我们在之前的几篇文章中学习了JDBC对数据库的增删改查.其实在实际开发中,一般都是使用第三方工具类,但是只有将之前的基础学习好了,在使用开源工具的时才能得心应手.如果对JDBC基础不太清楚,或者对本文看不太懂,建议先回顾一下本人之前的几篇和"MySQL数据库学习笔记"相关的文章.但是不管怎样,今后如果用到了数据库的增删改查,肯定是这篇文章中的代码用的最多. 一.DbUtils简介: DBUtils是ap

Servlet实现对SQLServer数据库的增删改查(含工程源码)

本文实现了用MyEclipse,编写Servlet,实现对SQLServer数据库的增删改查,适合新手入门,文末提供工程文件源码下载. 1.新建数据库test以及表users 表users共四列(id,name,psd,tel) 具体操作步骤见上篇博文.具体操作步骤 2.新建工程Web Project工程0623p 3. 编辑WebRoot目录下的index.jsp 创建表单(序号.账号.密码.电话.操作),并读取当前数据库内容. 注意: 此处要导入sql_data.java包用于连接数据库(

MySQL---数据库从入门走向大神系列(二)-用Java对MySQL进行增删改查

上节已经学会对MySQL进行简单的增删改查了,那么,我们如何实现用Java来对数据库操作增删改呢. 本节将用Java演示对MySQL进行增删改查. 简单的来说,分为4个步骤: 1.加载连接器(驱动)   通过Driver类 (最好用类反射来加载,更加灵活) 2.建立与数据库的连接 3.获取语句对象 4.对数据库进行操作(增删改查) 其实第一步现在可以不用写了,高版本的MySQL已经在内部帮我们写好了第一步,但是,为了兼容性更好(兼容低版本的MySQL)我们最好还是写上第一步. 我们先看一下原数据

新手 基础-用java在用户的增删改查中遇到的问题

问题描述 用java在用户的增删改查中遇到的问题 final static String的意义try{}catch的用法Connection conn = DriverManager.getConnection的意义关于这一段boolean用法的正确与否public boolean addUser(User newUser){ boolean flag=false; String addUserSQL=""INSERT INTO Users(UserNamePassword) VALU

急求一个Spring+Hibernate对MySQL数据库进行增删改查的例子!!!!

问题描述 现急求一个Spring+Hibernate对MySQL数据库进行增删改查的例子,例子比较简单也可以,主要就是要对数据库进行增删改查操作.如果哪位有的话请发到邮箱(395897780@qq.com),或者告诉我网址也行!最好是能连工程一起打包下载的,能够运行的,由于刚刚开始学,想下个完整的下来,怎样便于分析!!!本人在这里先表示感谢!!!!! 解决方案 解决方案二:其实不用这样,你用工具做,其中的包就可以生成的,注意:Hibernate一定要托管给Spring:之后以前Hibernate

.net链接另一台电脑的mysql数据库进行增删改查全过程?

问题描述 .net链接另一台电脑的mysql数据库进行增删改查全过程?求范例求源代码 解决方案 解决方案二:远程数据库连接!解决方案三:好办啊.传参数,改配置文件地址.解决方案四:引用1楼hou306010849的回复: 远程数据库连接! 改一下你原来的程序里面的数据库连接字符串就行了

MySQL数据库学习笔记(十一)----DAO设计模式实现数据库的增删改查(进一步封装JDBC工具类)

[正文] 一.DAO模式简介 DAO即Data Access Object,数据访问接口.数据访问:故名思义就是与数据库打交道.夹在业务逻辑与数据库资源中间. DAO模式实际上是两个模式的组合,即Data Accessor (数据访问者)模式和 Active Domain Object(领域对象)模式.Data Accessor 模式实现了数据访问和业务逻辑的分离:Active Domain Object 模式实现了业务数据的对象化封装. 需要注意的是,DAO设计模式是Java EE中的设计模式

[Android] SQLite数据库之增删改查基础操作

    在编程中经常会遇到数据库的操作,而Android系统内置了SQLite,它是一款轻型数据库,遵守事务ACID的关系型数据库管理系统,它占用的资源非常低,能够支持Windows/Linux/Unix等主流操作系统,同时能够跟很多程序语言如C#.PHP.Java等相结合.下面先回顾SQL的基本语句,再讲述Android的基本操作. 一. adb shell回顾SQL语句     首先,我感觉自己整个大学印象最深的几门课就包括<数据库>,所以想先回顾SQL增删改查的基本语句.而在Androi