📄 mobilesqldaoimpl.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 + -