java sqlhelper_java jdbc sqlhelper

packagecom.shop.dao;import java.sql.*;importjava.util.ArrayList;importjava.util.List;importcom.shop.po.Goods;importcom.shop.util.SqlHelper;/*** GoodsDao接口实现类

*

*@authorHP-Developer

**/

public class GoodsDaoImpl implementsGoodsDao {public intinsertGoods(Goods goods) {

Connection conn= null;//PreparedStatement和Statement的区别在于//PreparedStatement接口继承Statement,//PreparedStatement 实例包含已编译的 SQL 语句,所以其执行速度要快于 Statement 对象。//作为 Statement 的子类,PreparedStatement 继承了 Statement 的所有功能。//三种方法 execute、 executeQuery 和 executeUpdate 已被更改以使之不再需要参数//PreparedStatement性能更优,建议使用,但是比较复杂一点//Statement 是 Java 执行数据库操作的一个重要方法,用于在已经建立数据库连接的基础上,向数据库发送要执行的SQL语句//使用 Statement 对象执行语句

Statement stmt = null;int result = 0;

String name=goods.getName();

String kind=goods.getKind();double price=goods.getPrice();int stock=goods.getStock();

String des=goods.getDescription();

String sql= "insert into Goods values('"+name+"','"+kind+"','"+price+"','"+stock+"','"+des+"')";//访问数据库

try{//1获得连接

conn =SqlHelper.getConnection();//2执行对象

stmt =conn.createStatement();//3执行

result =stmt.executeUpdate(sql);

}catch(Exception e) {//捕捉错误

e.printStackTrace();

}finally{//关闭操作对象

SqlHelper.closeStatement(stmt);//关闭连接

SqlHelper.closeConn(conn);

}//返回受影响的行数

returnresult;//try catch finally是一种语句结构//就我个人的理解,在try中执行操作,catch捕捉错误,finally进行收尾

}//删除和更新与插入类似 ,我就不加注释了

public int deleteGoods(intid) {

Connection conn= null;

Statement stmt= null;int result = 0;

String sql= "delete from Goods where gID='"+id+"'";try{

conn=SqlHelper.getConnection();

stmt=conn.createStatement();

result=stmt.executeUpdate(sql);

}catch(SQLException e) {//TODO Auto-generated catch block

e.printStackTrace();

}finally{

SqlHelper.closeStatement(stmt);

SqlHelper.closeConn(conn);

}returnresult;

}public int updateGoods(intid, Goods goods) {//TODO Auto-generated method stub

Connection conn = null;

Statement stmt= null;int result = 0;

String name=goods.getName();

String kind=goods.getKind();double price=goods.getPrice();int stock=goods.getStock();

String des=goods.getDescription();

String sql= "update Goods set gName='"+name+"',gKind='"+kind+"',gPrice='"+price+"',gNum='"+stock+"',gDes='"+des+"' where gID='"+id+"'";try{

conn=SqlHelper.getConnection();

stmt=conn.createStatement();

result=stmt.executeUpdate(sql);

}catch(SQLException e) {

e.printStackTrace();

}finally{

SqlHelper.closeStatement(stmt);

SqlHelper.closeConn(conn);

}returnresult;

}//查询全部商品//因为是多个对象,采用返回List的方式,返回Goods对象的集合

public ListfindAll() {

Connection conn=null;

Statement stmt=null;//创建对象集合

List gdList = newArrayList();

ResultSet rs=null;

String sql="select * from Goods";try{

conn=SqlHelper.getConnection();

stmt=conn.createStatement();

rs=stmt.executeQuery(sql);while(rs.next()){//创建单个对象

Goods gd = newGoods();

gd.setId(rs.getInt("gID"));

gd.setName(rs.getString("gName"));

gd.setKind(rs.getString("gKind"));

gd.setPrice(rs.getDouble("gPrice"));

gd.setStock(rs.getInt("gNum"));

gd.setDescription(rs.getString("gDes"));//将此对象存入集合中,昨天闫老师带我们学习了ArrayList,add方法大家应该不陌生

gdList.add(gd);

}

}catch(SQLException e){

e.printStackTrace();

}finally{

SqlHelper.closeResultSet(rs);//关闭结果集

SqlHelper.closeStatement(stmt);//关闭Statement对象

SqlHelper.closeConn(conn);//关闭连接//注意关闭的顺序不能

}returngdList;

}public Goods findById(intid) {

Connection conn=null;

Statement stmt=null;//在判断商品存在后再new对象,这样规范

Goods gd = null;

ResultSet rs=null;//定义数据集ResultSet 接受stmt.executeQuery(sql)的返回值

String sql="select * from Goods where gID='"+id+"'";try{

conn=SqlHelper.getConnection();

stmt=conn.createStatement();//gd=(Goods)stmt.executeQuery(sql);stmt.executeQuery(sql)的返回值是一个结果集ResultSet//因为返回的记录是一条,之前想用强制转换的方法实现返回一个商品(Goods)对象,但是不可行,这条代码错误,下面给出正确的操作

rs=stmt.executeQuery(sql);if(rs.next()){

gd=newGoods();

gd.setId(rs.getInt("gID"));

gd.setName(rs.getString("gName"));

gd.setKind(rs.getString("gKind"));

gd.setPrice(rs.getDouble("gPrice"));

gd.setStock(rs.getInt("gNum"));

gd.setDescription(rs.getString("gDes"));

}else{//这样返回一个空商品对象,节省了即使对象为空还赋值的多余操作

returngd;

}

}catch(SQLException e){

e.printStackTrace();

}finally{

SqlHelper.closeResultSet(rs);//关闭结果集

SqlHelper.closeStatement(stmt);//关闭

SqlHelper.closeConn(conn);//关闭数据库连接

}returngd;

}

}

GoodsDaoImpl

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值