BUG 修改 :
09-20   因为 
Oracle  取元数据的字符串需要
大写 至修改并下载更新
测试使用表
      ID                           SN   STATIONNAME          SPELL      DEPOTID 
      -------------- ---- -------------------- ---------- ------- ------------------
      08050000390689    3     永安                              ya                ....版本升级 
09-21 DyanDBUtils 动态面向对象数据库 操作由于 hibernate 还要table影射成class 这好处和坏处只有我们程序员知道了
        只要修改数据库就大量影射附加工作要做 ,有时影射还有BUG弄的我们@#$%!.....(哈hibernate我是小鸟^_^),我----不要----影射 , 没有他们数据库就又回到jdbc.本人比较喜欢偷懒 哈哈 自己来个小框架吧( 就300来行的代码有兴趣的看看哦 )!!! 
用到技术
     BeanUtil , JDBC元数据(在这我可是好好看了下JDBC,其实他是很强的东西,大家应该好好用用^_^) 
下载
DBFactory.rarDBFactroy
数据是:+----+-------+-------------+------------+
| id | title | description | buydate    |
+----+-------+-------------+------------+
|  6 | tt    | asdgwgw     | 1990-12-02 |
+----+-------+-------------+------------+先看看测试吧 
public class testNotKonw extends TestCase {
    protected void setUp() throws Exception {
       //运行 sql 可见
        DBFactory.getTools().setIsShowSql(DBFactory.SHOW);
        super.setUp();
    }
    public void testDelete()throws Exception{
         // select 出来 就的 List 中 DynaBean : id , title .....  类型 , 和值都有了 
        for(Iterator it = DBFactory.getTools().select("select * from books").iterator();it.hasNext();){
            // 那就是delete : 目的是测试前 删除全部数据
            DBFactory.getTools().delete(it.next());
        }
    }
    
      public void testInsert()throws Exception{
        // insert 要先new出来个 table->bean  再 添属性  
        Object obj = DBFactory.getTools().getDynaTableClass("books").newInstance();
        BeanUtils.setProperty(obj,"id","6");
        BeanUtils.setProperty(obj,"title","tt");
        BeanUtils.setProperty(obj,"description","asdgwgw");
        BeanUtils.setProperty(obj,"buydate",new Date());
       //这几是 insert 了 (简单吧)
        DBFactory.getTools().insert(obj);
    }
    
    // update 
    public void testUpdate()throws Exception{
        for(Iterator it = DBFactory.getTools().select("select * from books").iterator();it.hasNext();){
            Object obj = it.next();
            BeanUtils.setProperty(obj,"buydate",new Date(90,11,2));
            DBFactory.getTools().update(obj);
        }
    }
}
控制台输出
//testDelete 
delete from books where 1=1  and id=6
//testInsert
insert into books(id,title,description,buydate) values( 6,'tt','asdgwgw','2007-09-19')
//testUpdate
delete from books where 1=1  and id=6
insert into books(id,title,description,buydate) values( 6,'tt','asdgwgw','1990-12-02')
代码关键说明:
关键在BeanUtil 的 DnayBean中 我通过元数据 得到了 这个Bean 属性.属性类型,还有表信息放在 getClass();的字符串中
   EG:    table=...;key=..,..,..;columns=...,..,; 后在insert , delet , update就是(先delete后insert^_^)  中 解析得到 动态写sql语句 
         更举 DnayBean中属性类型看看 Bean value 是否要加 ' value ' 还是直接 value 到sql 中
    public  BasicDynaClass getDynaTableClass(String table){
        Connection conn = getConn() ;
        List props = new ArrayList();
        DatabaseMetaData dm = null ;
        BasicDynaClass dynaClass = null ;
        try {    
            dm = conn.getMetaData();
            ResultSet coulumns = dm.getColumns(null,null,table,null);
            while(coulumns.next()){
               //元数据中得到 类型做 DynaBean 属性   coulumns.getInt("DATA_TYPE")  是  java.sql.Types.XXXXX 
                props.add(new DynaProperty( coulumns.getString("COLUMN_NAME"),getStrClass(coulumns.getInt("DATA_TYPE"))) );
            }
            // all : table
            //delete : column_name column_value
            //insert : column_name
            StringBuffer sb = new StringBuffer();
            sb.append("table=").append(table).append(";");
            
            sb.append("keys=");
                ResultSet keys = dm.getPrimaryKeys(null,null,table);
                while(keys.next()){
                    sb.append( keys.getString("column_name")).append(",");
                }
                sb.replace(sb.length()-1,sb.length(),";");
            
            sb.append("columns=");    
                ResultSet couls = dm.getColumns(null,null,table,null);
                while(couls.next()){
                    sb.append( couls.getString("column_name")).append(",");
                }
                sb.replace(sb.length()-1,sb.length(),";");
                
            //为 Class name  <- sb.toString()
            dynaClass = new BasicDynaClass(sb.toString() , null, 
                    (DynaProperty[])props.toArray(new DynaProperty[]{}) );
        } catch (Exception e) {e.printStackTrace();}
        finally{
            try {
                conn.close() ;
            } catch (SQLException e) {e.printStackTrace();}
        }
        return dynaClass ;
    }
insert , delete 差不多 就来insert
    public boolean insert(Object obj){
        String sqlstrat = "insert into ";
        String sqldo = " values( ";
        String sqlend = ")";
        String sql = "";
        boolean od = false ;
        
        Connection conn = getConn() ;
        Statement sta = null ;
        try {
             //解析getDynaClass().getName()  得到 table 
            sqlstrat += getTableConfig(obj,"table")[0]+"(" ;
            
             //解析getDynaClass().getName()  得到 columns
            String[] cols = getTableConfig(obj,"columns");
            for(int i=0;i<cols.length;i++){
                sqlstrat += cols[i]  +",";
                sqldo += getSqlAtt(obj,cols[i] )+",";
            }
            sql = sqlstrat.substring(0,sqlstrat.length()-1)+")"+sqldo.substring(0,sqldo.length()-1)+sqlend;
            sta = conn.createStatement();
            if( sta.executeUpdate(sql)>0){od = true;};
        } catch (Exception e) {e.printStackTrace();}
        finally{
            try {
                if( isShowSql==SHOW ) {System.out.println();System.out.println(sql);}
                conn.close();
            } catch (SQLException e) {e.printStackTrace();}
        }
        return od ;
    }
小结:
当然表连和多表 查 是没问题的
但在多表 delete , update 就还没有完成 (蛮难的 5555  还有 没时间)
单表的 delete update ,select,insert 都完成了 我会努力的 
大家要是认为还可以 帮忙顶贴 哦 我会都都完善哦