您的位置:首页 > 其它

如何删除“无法删除文件,无法读取源文件或磁盘”文件

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());
  }

//这样三句话就可以写完一个数据库的查询操作了

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: