这里以最基本的DML语句作为例子,其他各种复杂的DML语句可以根据这些基本JDBC语句得到。

一、查询表格

这里以两张表关联查询为例,采用动态方式,根据输入的条件在WHERE语句后面接上相应的各种条件

  1. /**
  2. * 图书信息查询
  3. * @param con
  4. * @param book
  5. * @return
  6. * @throws Exception
  7. */
  8. public ResultSet list(Connection con,Book book)throws Exception{
  9. StringBuffer sb=new StringBuffer("select * from t_book b,t_bookType bt where b.bookTypeId=bt.id");
  10. //两张表关联查询,有bookTypeID才能查询
  11. if(StringUtil.isNotEmpty(book.getBookName())){
  12. sb.append(" and b.bookName like '%"+book.getBookName()+"%'");
  13. }//动态添加查询条件
  14. if(StringUtil.isNotEmpty(book.getAuthor())){
  15. sb.append(" and b.author like '%"+book.getAuthor()+"%'");
  16. }
  17. if(book.getBookTypeId()!=null && book.getBookTypeId()!=-1)//“请选择”的ID为-1
  18. {
  19. sb.append(" and b.bookTypeId="+book.getBookTypeId());
  20. }
  21. PreparedStatement pstmt=con.prepareStatement(sb.toString());
  22. return pstmt.executeQuery();//执行,返回结果集
  23. }

返回的Resultset是结果集,比如可以给下拉框初始化。结果集使用方法是用一个游标将集合与一条记录架起桥梁:

  1. ResultSet rs=bookTypeDao.list(con, new BookType());//得到书种类结果集
  2. //添加第一项ID=-1
  3. bookType=new BookType();
  4. bookType.setBookTypeName("请选择...");
  5. bookType.setId(-1);//请选择的ID为-1
  6. this.bookTypeJCB.addItem(bookType);
  7. while(rs.next()){//rs一定要先next()一次,指向第一条记录
  8. bookType=new BookType();
  9. bookType.setId(rs.getInt("id"));
  10. bookType.setBookTypeName(rs.getString("bookTypeName"));
  11. this.bookTypeJCB.addItem(bookType);//添加项

二、数据插入

为了防止SQL注入,这里采用预编译方式。

  1. /**
  2. * 图书添加
  3. * @param con
  4. * @param book
  5. * @return
  6. * @throws Exception
  7. */
  8. public int add(Connection con,Book book)throws Exception//返回影响几条记录
  9. {
  10. String sql="insert into t_book values(null,?,?,?,?,?,?,?,?)";//注意和自己创建的表格属性对应
  11. PreparedStatement pstmt=con.prepareStatement(sql);//创建对象,得到SQL语句,先将带参数语句送入DBMS,防止SQL注入
  12. pstmt.setString(1, book.getBookName());//传递参数,填问号的值
  13. pstmt.setString(2, book.getAuthor());
  14. pstmt.setString(3, book.getSex());
  15. pstmt.setFloat(4, book.getPrice());
  16. pstmt.setInt(5, book.getBookTypeId());
  17. pstmt.setString(6, book.getBookDesc());
  18. pstmt.setInt(7, book.getBookNum());
  19. pstmt.setString(8, book.getPublisher());
  20. return pstmt.executeUpdate();//执行SQL语句,返回影响的记录数目
  21. }

三、数据修改:

  1. /**
  2. * 图书信息修改
  3. * @param con
  4. * @param book
  5. * @return
  6. * @throws Exception
  7. */
  8. public int update(Connection con,Book book)throws Exception
  9. {
  10. String sql="update t_book set bookName=?,author=?,sex=?,price=?,bookDesc=?,bookTypeId=? where id=?";//SQL修改语句
  11. PreparedStatement pstmt=con.prepareStatement(sql);
  12. pstmt.setString(1, book.getBookName());
  13. pstmt.setString(2, book.getAuthor());
  14. pstmt.setString(3, book.getSex());
  15. pstmt.setFloat(4, book.getPrice());
  16. pstmt.setString(5, book.getBookDesc());
  17. pstmt.setInt(6, book.getBookTypeId());
  18. pstmt.setInt(7, book.getId());
  19. return pstmt.executeUpdate();//返回值是影响的记路数目
  20. }

四、数据删除:

  1. /**
  2. * 图书信息删除
  3. * @param con
  4. * @param id
  5. * @return
  6. * @throws Exception
  7. */
  8. public int delete(Connection con,int id)throws Exception
  9. {
  10. String sql="delete from t_book where id=?";
  11. PreparedStatement pstmt=con.prepareStatement(sql);
  12. pstmt.setInt(1, id);
  13. return pstmt.executeUpdate();//返回值是删除的记路数目
  14. }

图书管理系统总结——数据库操纵(二):DML语句的更多相关文章

  1. [入门级] 基于 visual studio 2010 mvc4 的图书管理系统开发初步 (二)

    [入门级] 基于 visual studio 2010 mvc4 的图书管理系统开发初步 (二) Date  周六 10 一月 2015 By 钟谢伟 Category website develop ...

  2. oracle数据库操纵语言DML

    oracle数据库操纵语言:DML 添加数据: ()直接添加数据: insert into table_name(column_name1,column_name2,...) values(data1 ...

  3. Oracle数据库 数据完整性和DML语句

    数据完整性和DML语句 数据完整性 数据完整性(Data Integrity)是指数据的精确性(Accuracy) 和可靠性(Reliability).它是应防止数据库中存在不符合语义规定的数据和防止 ...

  4. Golang数据库操纵对IN语句的支持

    一: 在实际的工程项目中,SQL通常使用预编译的形式进行执行操纵,可以有效的防止SQL注入的风险,提高编码的规范性.golang中使用sqlx进行sql查询的时候,在使用in语句在一个集合中查询的时候 ...

  5. {MySQL数据库初识}一 数据库概述 二 MySQL介绍 三 MySQL的下载安装、简单应用及目录介绍 四 root用户密码设置及忘记密码的解决方案 五 修改字符集编码 六 初识sql语句

    MySQL数据库初识 MySQL数据库 本节目录 一 数据库概述 二 MySQL介绍 三 MySQL的下载安装.简单应用及目录介绍 四 root用户密码设置及忘记密码的解决方案 五 修改字符集编码 六 ...

  6. c# 数据库编程(通过SqlCommand 执行DML语句)

    原来一直是java,python等语言,最近用c#语言,并编写数据库访问代码.使用了之后,这里总结下,分享下c#如何操作数据库. 在java等其它语言中,有一套标准的api来完成数据库访问,并且一般都 ...

  7. c语言小项目-使用mysql数据库的图书管理系统

    VS2013通过MySQL方式连接到MySQL MySQL官网上C++的API有两个.一个是很成熟的mysql++,另一个是MySQL Connector/C++,近两年才出的,模仿JDBC做的,封装 ...

  8. Mariadb/MySQL数据库单表查询基本操作及DML语句

    Mariadb/MySQL数据库单表查询基本操作及DML语句 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一数据库及表相关概述 1>.数据库操作 创建数据库: CREATE ...

  9. Django数据库查询优化-事务-图书管理系统的搭建

    数据库查询优化 优化:虽然减轻了数据库的压力,但查询速度大大的减慢 ORM内所有的语句操作,默认都是惰性查询,只有你在真正的需要数据的时候才会走数据, 如果你只是写ORM语句时,是不会走数据库的,这样 ...

随机推荐

  1. [linux]centos7.4上升级python2版本到python3.6.5 【安装双版本,默认python3】

    版本声明 centos7.4 前言:linux上的python默认是版本2的,之前学django项目用的是3的版本 所以得升级下版本~ 1.下载python3.6.5 cd /usr/local/ w ...

  2. rz安装

    rpm -ivh http://www.rpmfind.net/linux/centos/6.10/os/x86_64/Packages/lrzsz-0.12.20-27.1.el6.x86_64.r ...

  3. 菜鸡的Java笔记第二 - java 数据类型

    1.程序的本质实际上就是在于数据的处理上. JAVA中的数据类型有两类 基本数据类型:是进行内容的操作而不是内存的操作 数值型: 整型:byte(-128 ~ 127),short(-32768 ~ ...

  4. vue + cesium开发(3) cesium1.87更新问题

    官方在2021年11月1号更新日志中记录了他们把zip.js升级到了2.3.12以适应webpack4中的关于import.meta不兼容的语法问题,但是经过实测,1.87版本依然没有解决这个问题,所 ...

  5. cesium开发(1)搭建 vue + cesium开发环境

    进入新公司一段时间了,新公司业务主要从事卫星方面等webgl的开发,主要使用了leafletjs和cesium,其中cesium难度较大,需求较多,再进行了一段时间的使用开发后依旧感到有些力不从心, ...

  6. JVM-学习笔记持续更新

    1.Java虚拟机的基本结构 (1)类加载子系统与方法区: 类加载子系统负责从文件系统或者网络中加载Class信息,加载的类信息存放在一块称为方法区的内存空间.除了类的信息外,方法区中可能还会存放运行 ...

  7. [atARC123F]Insert Addition

    前置知识 下面,先来介绍一下Stern-Brocot Tree的结构: 其是一棵满二叉树,每一个节点都是一个最简分数,其中根为$\frac{1}{1}$ 假设前$i$层的中序遍历分数依次为$\frac ...

  8. [luogu5574]任务分配问题

    首先暴力dp,令$f_{i,j}$表示前$i$个点划分为$j$段,即有转移$f_{i,j}=\min f_{k-1,j-1}+calc(k,i)$(其中$calc(i,j)$表示求区间$[i,j]$的 ...

  9. Swagger2简单使用教程

    Swagger2简单使用教程 1.简介 ​ Swagger是为了解决企业中接口(api)中定义统一标准规范的文档生成工具.很多采用前后端分离的模式,前端只负责调用接口,进行渲染,前端和后端的唯一联系, ...

  10. Mike post process with Matlab toolbox

    表怕,这个博客只有题目是英文的-- Matlab toolbox 安装 去DHI官网下载最新的MikeSDK2014与Matlab toolbox,下载好后安装MikeSDK2014,注意电脑上不能有 ...