************************JDBC操作事务*************************
1.开启事务
conn.setAutoCommit(false);
2.提交事务
conn.commit();
3. 回滚事务
conn.rollback();
注意:事务是默认关闭的,会自动提交..
******************************根据id查询单个商品种类、按照sql查询商品种类**************************
package com.dao.impl;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import com.dao.inter.CategoryDao;
import com.util.ConnOracle;
import com.vo.Category;
public class CategoryDaoImpl implements CategoryDao {
//1.组合Connection
private Connection conn;
public CategoryDaoImpl(){
conn = ConnOracle.getConnection();
}
@Override
public int addCategory(Category category) {
int count = 0;
//3.建立通道
String sql = "insert into category values(seq_category.nextval,?,?)";
//获得了一个预编译的通道 相当于IO通道 可以用它来发送sql语句
PreparedStatement pstmt = null;
//默认事务是关闭的 调用addCategory增加一条记录的时候 会自动提交
//开启事务
try {
//conn.setAutoCommit(false);
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, category.getCname());
pstmt.setString(2, category.getCdesc());
//4.执行并返回结果集
count = pstmt.executeUpdate();//可以执行除了DQL以外所有的语句 DML 返回的是受影响的行数 DCL或DDL语句 返回值是0
//conn.commit();
if(count>=1){
System.out.println("添加商品种类成功!");
}else{
System.out.println("没有添加任何商品种类!");
}
} catch (SQLException e) {
/*try {
conn.rollback();
} catch (SQLException e1) {
e1.printStackTrace();
}*/
System.out.println("建立通道或添加商品种类失败");
e.printStackTrace();
}finally{
//5.关闭
ConnOracle.closeConnection(null,pstmt, conn);
}
return count;
}
@Override
public int deleteCategory(Category category) {
int count = 0;
//3.建立通道
String sql = "delete from category where cid=?";
//获得了一个预编译的通道 相当于IO通道 可以用它来发送sql语句
PreparedStatement pstmt = null;
try {
pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, category.getCid());
//4.执行并返回结果集
count =pstmt.executeUpdate();//可以执行除了DQL以外所有的语句 DML 返回的是受影响的行数 DCL或DDL语句 返回值是0
if(count>=1){
System.out.println("删除商品种类成功!");
}else{
System.out.println("没有删除任何商品种类!");
}
} catch (SQLException e) {
System.out.println("建立通道或删除商品种类失败");
e.printStackTrace();
}finally{
//5.关闭
ConnOracle.closeConnection(null,pstmt, conn);
}
return count;
}
@Override
public int updateCategory(Category category) {
int count = 0;
//3.建立通道
String sql = "update category set cname=?,cdesc=? where cid=?";
//获得了一个预编译的通道 相当于IO通道 可以用它来发送sql语句
PreparedStatement pstmt = null;
try {
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, category.getCname());
pstmt.setString(2, category.getCdesc());
pstmt.setInt(3, category.getCid());
//4.执行并返回结果集
count =pstmt.executeUpdate();//可以执行除了DQL以外所有的语句 DML 返回的是受影响的行数 DCL或DDL语句 返回值是0
if(count>=1){
System.out.println("修改商品种类成功!");
}else{
System.out.println("没有修改任何商品种类!");
}
} catch (SQLException e) {
System.out.println("建立通道或修改商品种类失败");
e.printStackTrace();
}finally{
//5.关闭
ConnOracle.closeConnection(null,pstmt, conn);
}
return count;
}
@Override
public Category getCategoryById(int id) {
Category category = new Category();
//3.建立通道
String sql = "select * from category where cid=?";
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
pstmt = conn.prepareStatement(sql);
pstmt.setInt(1,id);
//4.执行并返回结果集
rs =pstmt.executeQuery();
while(rs.next()){
category.setCid(rs.getInt("cid"));
category.setCname(rs.getString("cname"));
category.setCdesc(rs.getString("cdesc"));
}
} catch (SQLException e) {
System.out.println("建立通道或查询单个商品种类失败");
e.printStackTrace();
}finally{
//5.关闭
ConnOracle.closeConnection(rs,pstmt, conn);
}
return category;
}
@Override
public List<Category> getPageByQuery(String sql) {
List<Category> list = new ArrayList<Category>();
Category category = null;
ResultSet rs = null;
Statement stmt = null;
//3.建立通道
try {
stmt = conn.createStatement();
//4.执行并返回结果集
rs = stmt.executeQuery(sql);
while(rs.next()){
category = new Category();
category.setCid(rs.getInt("cid"));
category.setCname(rs.getString("cname"));
category.setCdesc(rs.getString("cdesc"));
list.add(category);
}
} catch (SQLException e) {
System.out.println("创建通道或查询结果集失败");
e.printStackTrace();
}finally{
//5.关闭
ConnOracle.closeConnection(rs, stmt, conn);
}
return list;
}
public static void main(String[] args) {
CategoryDaoImpl dao = new CategoryDaoImpl();
String sql = "select * from category";
List<Category> list = dao.getPageByQuery(sql);
for(Category category:list){
System.out.println(category);
}
}
}