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

一、查询表格

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

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

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

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

二、数据插入

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

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

三、数据修改:

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

四、数据删除:

    /**
* 图书信息删除
* @param con
* @param id
* @return
* @throws Exception
*/
public int delete(Connection con,int id)throws Exception
{
String sql="delete from t_book where id=?";
PreparedStatement pstmt=con.prepareStatement(sql);
pstmt.setInt(1, id);
return pstmt.executeUpdate();//返回值是删除的记路数目
}

最新文章

  1. AX2012修改properties字体
  2. 【转载】谷歌酝酿将苹果Swift作为安卓APP主要开发语言
  3. 【原+转】用CMake代替makefile进行跨平台交叉编译
  4. CSS样式优先级
  5. windows 下安装 mysql
  6. ASP.NET SignalR 与 LayIM2.0 配合轻松实现Web聊天室(一) 之 基层数据搭建,让数据活起来(数据获取)
  7. android 手风琴
  8. mysql事务处理用法与实例详解
  9. POJ 2429 GCD & LCM Inverse (Pollard rho整数分解+dfs枚举)
  10. MySQL数据库百万级高并发网站实战
  11. urlrewrite 地址重写
  12. Android yyyymmdd转成yyyy-MM-dd格式
  13. Create a simple js-ctypes example
  14. Ajax调用返回json,xml数据类型(0517--pm)
  15. maven使用笔记一 下载json-lib引发的问题
  16. BZOJ 2762: [JLOI2011]不等式组( 平衡树 )
  17. Greenplum+Hadoop学习笔记-14-定义数据库对象之创建与管理模式
  18. 朗姆达表达式类似IN查询条件
  19. SpringBoot注册Windows服务和启动报错的原因
  20. android BluetoothAdapter蓝牙BLE扫描总结

热门文章

  1. 大数据SQL中的Join谓词下推,真的那么难懂?
  2. 【开源库推荐】#3 Android EventBus的使用
  3. spring rest小马哥
  4. idea添加插件后重启后报错:cannot load project xxxx 解决方案
  5. 基于nexus私服配置项目pom.xml和maven settings.xml文件
  6. Protocol Buffer序列化Java框架-Protostuff
  7. Django(76)isort工具对import导入进行排序
  8. [源码解析] PyTorch 分布式 Autograd (3) ---- 上下文相关
  9. 统计学习2:线性可分支持向量机(Scipy实现)
  10. 简单聊下.NET6 Minimal API的使用方式