package com.syc.category;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.List;

import com.syc.java.DB;

public class CategoryDAO {
	public static void save(Category c){
	Connection conn=null;
	PreparedStatement pstate=null;
	try {
		conn=DB.getConnection();
		String sql="insert into category value (null,?,?,?,?,?)";
		pstate=DB.getPreparedStatement(conn, sql);
		pstate.setString(1, c.getName());
		pstate.setString(2, c.getDescription());
		pstate.setInt(3, c.getPid());
		pstate.setInt(4, c.isLeaf()?0:1);
		pstate.setInt(5, c.getGrade());
		pstate.executeUpdate();
	} catch (SQLException e) {
		e.printStackTrace();
	}finally{
		DB.closeStatement(pstate);
		DB.closeConnection(conn);
	}
	}
	
	
	public static void getCategories(List<Category> categories,int id){
		Connection conn=null;
		try {
			conn=DB.getConnection();
			getCategories(conn,categories,id);
		}finally{
			DB.closeConnection(conn);
		}
		
		
	}
	public static void getCategories(Connection conn,List<Category> categories,int id){
		Statement state=null;
		ResultSet reSet=null;
		try {
			String sql="select * from category where pid="+id;
			state=DB.getStatement(conn);
			reSet=DB.executeQuery(state, sql);
			while(reSet.next()){
				Category c=new Category();
				c.setId(reSet.getInt("id"));
				c.setDescription(reSet.getString("description"));
				c.setGrade(reSet.getInt("grade"));
				c.setLeaf(reSet.getInt("isleaf")==0?true:false);
				c.setPid(reSet.getInt("pid"));
				c.setName(reSet.getString("name"));
				categories.add(c);
				if(!c.isLeaf()){
					getCategories(conn,categories,reSet.getInt("id"));
				}
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}finally{
			DB.closeResultSet(reSet);
			DB.closeStatement(state);
		}
	}
	
	public static void savechild(int pid,String name,String description){
			Connection conn=null;
			Statement state=null;
			PreparedStatement pstate=null;
			ResultSet reSet=null;
			try {
				conn=DB.getConnection();
				conn.setAutoCommit(false);
				state=DB.getStatement(conn);
				reSet=DB.executeQuery(state, "select * from category where id="+pid);
				reSet.next();
				String sql="insert into category value (null,?,?,?,?,?)";
				pstate=DB.getPreparedStatement(conn, sql);
				pstate.setString(1, name);
				pstate.setString(2, description);
				pstate.setInt(3, pid);
				pstate.setInt(4, 0);
				pstate.setInt(5, reSet.getInt("grade")+1);
				state.executeUpdate("update category set isleaf=1 where id="+pid);
				pstate.executeUpdate();
				conn.commit();
				conn.setAutoCommit(true);
			} catch (SQLException e) {
				try {
					conn.rollback();
				} catch (SQLException e1) {
					e1.printStackTrace();
				}
				e.printStackTrace();
			}finally{
				DB.closeResultSet(reSet);
				DB.closeStatement(state);
				DB.closeStatement(pstate);
				DB.closeConnection(conn);
			}
		
	}

	public static void deleteCategory(int id, int pid) {
		Connection conn=null;
		Statement state=null;
		ResultSet reSet=null;
		try {
			conn=DB.getConnection();
			conn.setAutoCommit(false);
			
			state=DB.getStatement(conn);
			delete(conn,id);
			reSet=DB.executeQuery(state, "select count(*) from category where pid="+pid);
			reSet.next();
			int count=reSet.getInt(1);
			if(count<=0){
				state.executeUpdate("update category set isleaf=0 where id="+pid);
			}
			
			conn.commit();
			conn.setAutoCommit(true);
		} catch (SQLException e) {
			try {
				conn.rollback();
			} catch (SQLException e1) {
				e1.printStackTrace();
			}
			e.printStackTrace();
		}finally{
			DB.closeResultSet(reSet);
			DB.closeStatement(state);
			DB.closeConnection(conn);
		}		
	}
	
	public static void delete(Connection conn,int id) {
		Statement state1=null;
		Statement state2=null;
		ResultSet reSet=null;
		try {
			conn=DB.getConnection();
			state1=DB.getStatement(conn);
			state2=DB.getStatement(conn);
			reSet=DB.executeQuery(state2, "select * from category where pid="+id);
			state1.executeUpdate("delete from category where id="+id);
			while(reSet.next()){
				delete(conn, reSet.getInt("id"));
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}finally{
			DB.closeResultSet(reSet);
			DB.closeStatement(state1);
			DB.closeStatement(state2);
		}		
	}

}
最近下载更多
komorebi123987  LV5 2023年12月9日
qiuaizhang  LV3 2023年4月10日
copy1000  LV1 2022年9月30日
00000007  LV1 2022年7月15日
284650  LV1 2022年6月12日
illkih  LV2 2022年3月17日
3361758107  LV1 2021年12月19日
201901150233  LV1 2021年12月12日
A Lazy dog  LV1 2021年12月11日
mwk545924364  LV4 2021年12月9日
最近浏览更多
15719908287  LV9 6月19日
kuyedie  LV1 6月17日
xcccffff  LV1 6月11日
15063515452 6月9日
暂无贡献等级
123momom 6月9日
暂无贡献等级
苏苏-susu  LV1 5月15日
微信网 5月13日
暂无贡献等级
13543528515  LV8 5月13日
ljhgff  LV1 1月20日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友