⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 attacksolutiondao.java

📁 strutssample是应用JAVA struts框架进行编程的一个实例。请下载相应的数据库创建源码
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
package struts.sample.cap1.sample3.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collection;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;

import struts.sample.cap1.sample3.entity.AttackSolution;

public class AttackSolutionDAO {
	// 提供一个JDBC的连接变量,该变量将会在构造函数中被调用并赋值
	private DataSource dataSource;

	private Connection con;

	/**
	 * 默认的构造函数
	 */
	public AttackSolutionDAO() {
		try {
			Context initCtx = new InitialContext();
			dataSource = (DataSource) initCtx.lookup("java:jdbc/MySqlDS");
		} catch (NamingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

	private Connection getConnection() {
		/*
		 * String connName = "jdbc:mysql://localhost:3306/test"; try {
		 * Class.forName("com.mysql.jdbc.Driver").newInstance(); con =
		 * DriverManager.getConnection(connName, "root",""); return con ; }
		 * catch (Exception e) { // TODO Auto-generated catch block
		 * e.printStackTrace(); return null ; }
		 */
		java.sql.Connection conn;
		try {
			conn = dataSource.getConnection();
			return conn;
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return null;
		}
	}

	/**
	 * 为攻击解决方案Table删除指定主键的记录 本方法提供一个String类型的输入参数 本方法返回一个boolean类型的结果
	 * 当结果返回为true时表示删除结果成功 当结果返回为false时表示删除结果失败
	 */
	public boolean deleteAttackSolution(String argAttackEventCode) {
		// 提供一个创建预编译SQL 语句的变量
		PreparedStatement ps = null;

		// SQL语句“删除fw_attacksolution表”
		String sql = " delete from fw_attacksolution where attack_event_code = ?";

		// JDBC连接
		Connection con = null;
		try {
			// 取得JDBC连接
			con = getConnection();

			// 判断JDBC连接是否被关闭,若关闭则直接抛出一个IllegalStateException
			if (con.isClosed()) {
				throw new IllegalStateException("ERROR.THE CONNECTION ISCLOSED");
			}

			// 预编译SQL 语句
			ps = con.prepareStatement(sql);

			// 将攻击类别代码号进行SQL预处理
			ps.setString(1, argAttackEventCode);

			// 执行SQL并判断是否已经有一条记录被删除
			// executeUpdate方法判断是否有一条记录被更动,若更动则为1,否则则为0
			if (ps.executeUpdate() != 1) {
				// 若没有更动一条记录则返回false,表示删除结果失败
				return false;
			}
			// 捕捉SQLException
		} catch (SQLException ex) {
			// 在控制台将SQLException打印出来方便调试
			ex.printStackTrace();
			return false;
		} finally {
			// 在完成整段代码的工作后必须将JDBC连接关闭
			try {
				if (ps != null) {
					ps.close();
					con.close();
				}
			} catch (SQLException e) {
				e.printStackTrace();
				throw new RuntimeException("ERROR.UNEXPECTED");
			}
		}
		// 当代码全部完成且没有错误时,返回true表示删除结果成功
		return true;
	}

	/**
	 * 为攻击解决方案Table写入记录 本方法提供一个AttackSolution类型的输入参数 本方法返回一个boolean类型的结果
	 * 当结果返回为true时表示添加结果成功 当结果返回为false时表示添加结果失败
	 */
	public boolean createAttackSolution(AttackSolution attackSolution) {
		// 提供一个创建预编译SQL 语句的变量
		PreparedStatement ps = null;

		// SQL语句“插入fw_attacksolution表”
		String sql = " INSERT INTO fw_attacksolution(attack_event_code,"
				+ "attack_mean, attack_action) VALUES (?,?,?)";

		// JDBC连接
		Connection con = null;
		try {
			// 取得JDBC连接
			con = getConnection();

			// 判断JDBC连接是否被关闭,若关闭则直接抛出一个IllegalStateException
			if (con.isClosed()) {
				throw new IllegalStateException("ERROR.THE CONNECTION ISCLOSED");
			}

			// 预编译SQL 语句
			ps = con.prepareStatement(sql);

			// 判断传入方法的AttackSolution对象是否为null
			if (attackSolution != null) {
				// 利用Connection对象的prepareStatement方法创建一个对象
				// 该对象将被作为PreparedStatement接口的一个接口实例
				ps = con.prepareStatement(sql);

				// 将攻击类别代码号进行SQL预处理
				ps.setString(1, attackSolution.getAttack_event_code());

				// 将攻击类别含义进行SQL预处理
				ps.setString(2, attackSolution.getAttack_mean());

				// 将攻击类别的处理解决方法进行SQL预处理
				ps.setString(3, attackSolution.getAttack_action());

				// 执行SQL并判断是否已经有一条记录被插入。
				// executeUpdate方法判断是否有一条记录被更动,若更动则为1,否则则为0
				if (ps.executeUpdate() != 1) {
					// 若没有更动一条记录则返回false,表示添加结果失败
					return false;
				}
			} else {
				// 当传入方法的AttackSolution对象为null直接返回false
				// 表示添加结果失败
				return false;
			}
			// 捕捉SQLException,当SQL语句执行中发生如主键重复、有空列限制等错误时
		} catch (SQLException ex) {
			// 在控制台将SQLException打印出来方便调试
			ex.printStackTrace();
			return false;
		} finally {
			// 在完成整段代码的工作后必须将JDBC连接关闭
			try {
				if (ps != null) {
					ps.close();
					con.close();
				}
			} catch (SQLException e) {
				e.printStackTrace();
				throw new RuntimeException("ERROR.UNEXPECTED");
			}
		}
		// 当代码全部完成且没有错误时,返回true表示添加结果成功
		return true;
	}

	/**
	 * 将攻击解决方案Table全部显示出来 本方法无参数 本方法返回一个Collection类型的结果
	 * 该Collection集合中会有多个AttackSolution对象
	 */
	public Collection retrieveAllAttackSolution() {
		// 提供一个创建预编译SQL 语句的变量
		PreparedStatement ps = null;

		// 提供一个返回SQL查询结果的ResultSet接口变量
		// ResultSet带有游标可以指向返回结果中的某条记录
		ResultSet rs = null;

		// 实现Collection接口的ArrayList类,创建该类的实例作为本方法的返回
		ArrayList list = new ArrayList();

		// SQL语句“无条件查询fw_attacksolution表按attack_event_code排序”
		String sql = "SELECT attack_event_code,attack_mean, attack_action from fw_attacksolution order by attack_event_code";

		// JDBC连接
		Connection con = null;

		try {
			// 取得JDBC连接
			con = getConnection();

			// 判断JDBC连接是否被关闭,若关闭则直接抛出一个IllegalStateException
			if (con.isClosed()) {
				throw new IllegalStateException("ERROR.THE CONNECTION ISCLOSED");
			}

			// 预编译SQL 语句并执行
			ps = con.prepareStatement(sql);
			rs = ps.executeQuery();

			// 当返回结果集中有记录时进行处理
			while (rs.next()) {
				// 定义AttackSolution类型的变量并实例化
				// 在这里不将其放在循环外进行实例化的原因请读者自己考虑一下
				AttackSolution attackSolution = new AttackSolution();
				attackSolution.setAttack_event_code(rs.getString(1));
				attackSolution.setAttack_mean(rs.getString(2));
				attackSolution.setAttack_action(rs.getString(3));
				list.add(attackSolution);
			}
			// 捕捉SQLException
		} catch (SQLException ex) {
			// 在控制台将SQLException打印出来方便调试
			ex.printStackTrace();
		} finally {
			// 在完成整段代码的工作后必须将JDBC连接关闭
			try {
				if (ps != null) {
					ps.close();
					con.close();
				}

				// 注意这里还要关闭ResultSet的接口变量
				if (rs != null) {
					rs.close();
				}
			} catch (SQLException e) {
				e.printStackTrace();
				throw new RuntimeException("ERROR.UNEXPECTED");
			}
		}
		// 返回list
		return list;
	}

	/**
	 * 将攻击解决方案Table全部显示出来 本方法无参数 本方法返回一个Collection类型的结果

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -