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

📄 mobilesqldaoimpl.java

📁 开发的一个java web的任务管理系统。
💻 JAVA
字号:
package unicom.dao;

import java.io.*;
import java.sql.*;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import javax.servlet.http.HttpServletRequest;

import org.apache.commons.fileupload.DiskFileUpload;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.struts.upload.FormFile;

import unicom.bean.Mobile;
import unicom.util.DBUtil;

/**
 * @author xiaogang
 * 日期:Apr 16, 2008
 * 功能:实现接口IMobileDAO,提供基于mysql数据库的实现方案
 * 优点:具体的数据库操作被封装,降低耦合
 * 缺点:不应该将文件上传代码放在dao层,应该单独写一个类,利于复用.
 * 建议:<1>注意各个参数是否合法,最好在客户端验证
 *       <2>sql语句最好写全,容易维护
 */

public class MobileSqlDaoImpl implements IMobileDao {

	//将telList中所有的TMobile对象添加到数据库中
	public boolean addMobileList(List telList) {
		boolean flag = true;
		try {
			Iterator iterator = telList.iterator();
			while (iterator.hasNext()) {
				addSingleMobile((Mobile) iterator.next());
			}
		} catch (Exception e) {
			System.out.println(e);
			return false;
		}
		return flag;
	}

	//向数据库插入单个Mobile记录
	public void addSingleMobile(Mobile mobile) {
		String number = mobile.getNumber();
		String type = mobile.getType();
		String isAvailable = mobile.getIsAvailable();
		String sql = "insert into tmobile(number,type,isAvailable) values('"
				+ number + "','" + type + "','" + isAvailable + "')";
		//执行单个Mobile的插入操作
		Connection conn = DBUtil.getConn();
		Statement stmt = DBUtil.getStatement(conn);
		DBUtil.executeUpdate(stmt, sql);
		//释放数据库资源
		DBUtil.close(stmt);
		DBUtil.close(conn);

	}

	//读取文件内容到数据库,此处可以改进用批处理,事务处理,注意参数的合法性
	public boolean readFileToDB(String path) {
		boolean flag = true;
		File file = new File(path);
		BufferedReader br = null;
		String telCode;

		try {
			br = new BufferedReader(new FileReader(file));
			while ((telCode = br.readLine()) != null) {
				Mobile mobile = new Mobile();
				mobile.setNumber(telCode);
				mobile.setType("SIM");
				mobile.setIsAvailable("Y");
				addSingleMobile(mobile);
			}
		} catch (FileNotFoundException e) {
			e.printStackTrace();
			flag = false;
		} catch (IOException e) {
			e.printStackTrace();
			flag = false;
		} finally {
			//释放资源
			try {
				br.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		return flag;
	}

	//从客户端文件到服务器硬盘,注意参数的合法性
	public boolean upLoadFileToServer(HttpServletRequest request, String path) {
		boolean flag = true;
		//得到文件上传句柄
		DiskFileUpload fu = new DiskFileUpload();
		//设置用户允许上传的文件大小,单位;字节
		fu.setSizeMax(10000000);
		//设置最多只能在内存中存储的数据,单位:字节
		fu.setSizeThreshold(4096);
		//设置临时目录
		fu.setRepositoryPath("c:\\temp");

		try {
			//解析request,读取文件上传信息
			List fileItems = fu.parseRequest(request);
			//依次处理每个上传的文件
			Iterator iter = fileItems.iterator();
			while (iter.hasNext()) {
				FileItem item = (FileItem) iter.next();
				//如果不是表单数据
				if (!item.isFormField()) {
					item.write(new File(path));
				}
			}
		} catch (FileUploadException e) {
			e.printStackTrace();
			flag = false;
		} catch (Exception e) {
			e.printStackTrace();
			flag = false;
		} finally {
			//释放资源
		}
		return flag;
	}

	//利用struts提供的文件上传组件将文件上传到服务器
	public boolean upLoadFileToServer(FormFile theFile, String path) {
		boolean flag = false;
		OutputStream bos = null;
		InputStream stream = null;
		if (!theFile.getFileName().equals("")) {
			//获得文件输入流
			try {
				stream = theFile.getInputStream();
				//建立到指定路径的文件输出流
				bos = new FileOutputStream(path);
				byte[] buffer = new byte[1024];
				while ((stream.read(buffer)) != -1) {
					bos.write(buffer);
				}
				flag = true;
			} catch (FileNotFoundException e) {
				e.printStackTrace();
				flag = false;
			} catch (IOException e) {
				e.printStackTrace();
				flag = false;
			} finally {
				//释放资源
				try {
					stream.close();
				} catch (IOException e) {
					System.out.println(e);
					flag = false;
				}
				try {
					bos.close();
				} catch (IOException e) {
					System.out.println(e);
					flag = false;
				}
			}
		}
		return flag;
	}

	//以List的形式返回所有可以使用的电话号码
	public List returnAllMobileAvailable() {
		List list = new ArrayList();
		String sql = "select number from TMobile where isAvailable = 'Y'";
		Connection conn = DBUtil.getConn();
		Statement stmt = null;
		ResultSet rs = null;

		try {
			stmt = conn.createStatement();
			rs = stmt.executeQuery(sql);
			while (rs.next()) {
				Mobile mobile = new Mobile();
				mobile.setNumber(rs.getString(1));
				list.add(mobile);
			}
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			//释放资源
			DBUtil.close(conn);
			DBUtil.close(stmt);
			DBUtil.close(rs);
		}

		return list;
	}

	//以List的形式返回所有未开户的手机号码
	public List returnAllMobileNoAccount() {
		List list = new ArrayList();
		String sql = "select number from v_TMobile_TUser order by number";
		Connection conn = DBUtil.getConn();
		Statement stmt = null;
		ResultSet rs = null;

		try {
			stmt = conn.createStatement();
			rs = stmt.executeQuery(sql);
			while (rs.next()) {
				Mobile mobile = new Mobile();
				mobile.setNumber(rs.getString(1));
				list.add(mobile);
			}
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			//释放资源
			DBUtil.close(conn);
			DBUtil.close(stmt);
			DBUtil.close(rs);
		}

		return list;
	}

}

⌨️ 快捷键说明

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