如何删除“无法删除文件,无法读取源文件或磁盘”文件
2016-03-31 10:18
218 查看
增删改属于一类操作,都是不返回结果集的,而查找是要返回结果集的
1)先说增删改的操作
public int buildConn(String sql)throws Exception{
Connection conn=null;
Statement stmt=null;
int result=0;
boolean flag;
try{
conn=sqlconn.conn();
stmt=conn.createStatement();
result=stmt.executeUpdate(sql);
System.out.println("恭喜你执行成功"+result+"条记录!");
flag=true;
}catch(Exception e){
System.out.println("抱歉!执行失败!"+e.getMessage());
flag=false;
}finally{
stmt.close();
conn.close();
}
return result;
}
2)而对于查询操作的就比较麻烦一点,通常我们都将查询的结果集打包到一个javabean组合中,例如我有一个登陆的javabean里面只有name和password,对应的表中user_list的两列name,password.现在要将user_list中的所有数据读出来,读出一条,就放到一个javabean中,多条数据就放到List<javabean>中。首先我们可以讲数据库中的所有数据都用读取字符串的形式getString的方法读出来,当然如果数据库中表的列的属性不是varchar类型,就不可以用此类方法。
本通用查询只针对都是String类型的表。
/**
* 通用查询,传入要查询的sql语句
* 返回一个List<String[]>
*/
public List<String[]> query(String sql) throws Exception{
this.queryList=new ArrayList<String[]>();
Statement stmt = null;
ResultSet rs = null;
Connection conn=null;
conn=this.sqlconn.conn();
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
ResultSetMetaData rsmd = rs.getMetaData();
int columnCount = rsmd.getColumnCount();
//2、取得表体信息,要对表体进行判断是否存在,如果不存在则退出
while(true){
if(false == rs.next()){
break;
}
String dataList[] = new String[columnCount];
for(int body = 1; body <= columnCount; body ++){
String columnValue = rs.getString(body);
dataList[body - 1] = columnValue;
}
this.queryList.add(dataList);
}
rs.close();
stmt.close();
conn.close();
return queryList;
}
这个方法是将表中的内容读取出来,然后存放到一个List<String[]>中,但这样有个坏处,就是读出来的数据还没有打包成javabean,要自己打包,很是繁琐。所以在这个方法的基础上,我再写了一个将List<String[]>打包成javabean的方法。在这里要注意一点,就是,这个数据库通用操作类必须是一个泛型,class SqlOperDao<T>,要不然,Object类型是无法转化为你想要的javabean类型
/**
* 传入一个javabean,sql查询语句
* 查询返回的结果集,放到一个集合中List<javaBean>
* 这是一个赋值的操作,只对String类型进行复制,如果javabean中的set方法不是传String类型的
* 可以改写为
* public void setAttribute(String str){
* this.attribute=Integer.parseInt(str);
* }
* T可以传入一个JavaBean
*/
public List<Object> query(Object t,String sql)throws Exception{
List<Object> resultlist=new ArrayList<Object>();
Class mycl=t.getClass();
Field[] fields=mycl.getDeclaredFields();
List<String[]> querylist=this.query(sql);
for(String[] results:queryList){
Object instance=mycl.newInstance();
int i=0;
for(Field field:fields){
//采用java反射机制,获取javabean中set方法的方法名称,由于set方法都是由set+属性名称(String)构成的,所以用拼凑字符串
String setMethod="set"+String.valueOf(field.getName().charAt(0)).toUpperCase()+""+field.getName().substring(1);
Method set=mycl.getMethod(setMethod,String.class);
set.invoke(instance,results[i]);
i++;
}
resultlist.add(instance);
}
return resultlist;
}
在此通用数据查询就完成了,再来,看下如何使用?
javabean: class UserList{ private String name;
private String password; //get和set方法由myeclipse自动生成}
Dao层:要读取数据库中user_list中的所有数据
public static void main(String[] args0) throws Exception{
SqlOperDao sod=new SqlOperDao();
UserList t=new UserList();
String sql="SELECT * FROM user_list";
List<UserList> list=sod.query(t, sql);
for(Eatery e:list){
System.out.println(e.getEateryName());
}
//这样三句话就可以写完一个数据库的查询操作了
}
1)先说增删改的操作
public int buildConn(String sql)throws Exception{
Connection conn=null;
Statement stmt=null;
int result=0;
boolean flag;
try{
conn=sqlconn.conn();
stmt=conn.createStatement();
result=stmt.executeUpdate(sql);
System.out.println("恭喜你执行成功"+result+"条记录!");
flag=true;
}catch(Exception e){
System.out.println("抱歉!执行失败!"+e.getMessage());
flag=false;
}finally{
stmt.close();
conn.close();
}
return result;
}
2)而对于查询操作的就比较麻烦一点,通常我们都将查询的结果集打包到一个javabean组合中,例如我有一个登陆的javabean里面只有name和password,对应的表中user_list的两列name,password.现在要将user_list中的所有数据读出来,读出一条,就放到一个javabean中,多条数据就放到List<javabean>中。首先我们可以讲数据库中的所有数据都用读取字符串的形式getString的方法读出来,当然如果数据库中表的列的属性不是varchar类型,就不可以用此类方法。
本通用查询只针对都是String类型的表。
/**
* 通用查询,传入要查询的sql语句
* 返回一个List<String[]>
*/
public List<String[]> query(String sql) throws Exception{
this.queryList=new ArrayList<String[]>();
Statement stmt = null;
ResultSet rs = null;
Connection conn=null;
conn=this.sqlconn.conn();
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
ResultSetMetaData rsmd = rs.getMetaData();
int columnCount = rsmd.getColumnCount();
//2、取得表体信息,要对表体进行判断是否存在,如果不存在则退出
while(true){
if(false == rs.next()){
break;
}
String dataList[] = new String[columnCount];
for(int body = 1; body <= columnCount; body ++){
String columnValue = rs.getString(body);
dataList[body - 1] = columnValue;
}
this.queryList.add(dataList);
}
rs.close();
stmt.close();
conn.close();
return queryList;
}
这个方法是将表中的内容读取出来,然后存放到一个List<String[]>中,但这样有个坏处,就是读出来的数据还没有打包成javabean,要自己打包,很是繁琐。所以在这个方法的基础上,我再写了一个将List<String[]>打包成javabean的方法。在这里要注意一点,就是,这个数据库通用操作类必须是一个泛型,class SqlOperDao<T>,要不然,Object类型是无法转化为你想要的javabean类型
/**
* 传入一个javabean,sql查询语句
* 查询返回的结果集,放到一个集合中List<javaBean>
* 这是一个赋值的操作,只对String类型进行复制,如果javabean中的set方法不是传String类型的
* 可以改写为
* public void setAttribute(String str){
* this.attribute=Integer.parseInt(str);
* }
* T可以传入一个JavaBean
*/
public List<Object> query(Object t,String sql)throws Exception{
List<Object> resultlist=new ArrayList<Object>();
Class mycl=t.getClass();
Field[] fields=mycl.getDeclaredFields();
List<String[]> querylist=this.query(sql);
for(String[] results:queryList){
Object instance=mycl.newInstance();
int i=0;
for(Field field:fields){
//采用java反射机制,获取javabean中set方法的方法名称,由于set方法都是由set+属性名称(String)构成的,所以用拼凑字符串
String setMethod="set"+String.valueOf(field.getName().charAt(0)).toUpperCase()+""+field.getName().substring(1);
Method set=mycl.getMethod(setMethod,String.class);
set.invoke(instance,results[i]);
i++;
}
resultlist.add(instance);
}
return resultlist;
}
在此通用数据查询就完成了,再来,看下如何使用?
javabean: class UserList{ private String name;
private String password; //get和set方法由myeclipse自动生成}
Dao层:要读取数据库中user_list中的所有数据
public static void main(String[] args0) throws Exception{
SqlOperDao sod=new SqlOperDao();
UserList t=new UserList();
String sql="SELECT * FROM user_list";
List<UserList> list=sod.query(t, sql);
for(Eatery e:list){
System.out.println(e.getEateryName());
}
//这样三句话就可以写完一个数据库的查询操作了
}
相关文章推荐
- AS 数组
- python调用caffe接口进行classify时提示Mean shape incompatible with input shape错误的解决方法
- 共享内存
- 在spark中操作mysql数据 ---- spark学习之七
- ORA-12520
- linux 头文件
- lightoj 1158 - Anagram Division 状压DP
- 码农小汪-剑指Offer之10 - 数值的整数次方 快速幂
- shell中用空字符''间隔变量
- C++在游戏中开发中发送多于1K的数据
- linux第十八章学习笔记
- UDP收/发广播包原理及步骤
- Linux下Loadrunner建立socket连接方法
- html调用XML
- Odoo8在TreeView左上角增加自定义按钮以及通过继承生成自定义的View_Mode
- 贪心算法 Problem P 1015 求最少花费
- 项目管理风险评估
- 利用Processing实现IOGraphica
- JavaScript 开发的45个经典技巧
- IIS日志-网站运维的好帮手