动态创建表


import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class TableUtil {
	private static Connection conn;  
	private static PreparedStatement ps;      
	 
	 /* 获取数据库连接的函数*/  
    private static Connection getConnection() {  
        Connection con = null;    //创建用于连接数据库的Connection对象  
        String driverClassName = "com.mysql.jdbc.Driver";   
        String url = "jdbc:mysql://localhost:3306/szh?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull";
        String username = "root";   
        String password = "";
        try {  
            Class.forName(driverClassName);
            con =  DriverManager.getConnection(url, username, password);
        } catch (Exception e) {  
            System.out.println("数据库连接失败" + e.getMessage());  
        }  
        return con;
    }  
	
	
    /** 
     * 创建表 
     * @param tabName 表名称 
     * @param tab_fields  表字段 
     */  
    public static void createTable(String tabName,String[] tab_fields) {  
        conn = getConnection();    // 首先要获取连接,即连接到数据库  
        try {  
            String sql = "create table "+tabName+"(id int auto_increment primary key not null";   
            if(tab_fields!=null&&tab_fields.length>0){  
                sql+=",";  
                int length = tab_fields.length;  
                for(int i =0 ;i<length;i++){  
                    //添加字段  
                    sql+=tab_fields[i].trim()+" varchar(50)";  
                    //防止最后一个,  
                    if(i<length-1){  
                        sql+=",";  
                    }  
                }  
            }  
            //拼凑完 建表语句 设置默认字符集  
            sql+=")DEFAULT CHARSET=utf8;";  
            //System.out.println("建表语句是:"+sql);  
            ps = conn.prepareStatement(sql);  
            ps.executeUpdate(sql);    
            ps.close();  
            conn.close();    //关闭数据库连接  
        } catch (SQLException e) {  
            System.out.println("建表失败" + e.getMessage());  
        }  
    }  
      
    /** 
     * 添加数据 
     * @param tabName 表名 
     * @param fields 参数字段 
     * @param data 参数字段数据 
     */  
    public static void insert(String tabName,String[] fields,String[] data) {  
        conn = getConnection();    // 首先要获取连接,即连接到数据库  
        try {  
            String sql = "insert into "+tabName+"(";   
            int length = fields.length;  
            for(int i=0;i<length;i++){  
                sql+=fields[i];  
                //防止最后一个,  
                if(i<length-1){  
                    sql+=",";  
                }  
            }  
            sql+=") values(";  
            for(int i=0;i<length;i++){  
                sql+="?";  
                //防止最后一个,  
                if(i<length-1){  
                    sql+=",";  
                }  
            }  
            sql+=");";  
            //System.out.println("添加数据的sql:"+sql);  
            //预处理SQL 防止注入  
            excutePs(sql,length,data);  
            //执行  
            ps.executeUpdate();  
            //关闭流  
            ps.close();  
            conn.close();    //关闭数据库连接  
        } catch (SQLException e) {  
            System.out.println("添加数据失败" + e.getMessage());  
        }  
    } 
    
    
    /** 
     * 替换添加数据 
     * @param tabName 表名 
     * @param fields 参数字段 
     * @param data 参数字段数据 
     */  
    public static void replaceInto(String tabName,String[] fields,String[] data) {  
        conn = getConnection();    // 首先要获取连接,即连接到数据库  
        try {  
            String sql = "replace into "+tabName+"(";   
            int length = fields.length;  
            for(int i=0;i<length;i++){  
                sql+=fields[i];  
                //防止最后一个,  
                if(i<length-1){  
                    sql+=",";  
                }  
            }  
            sql+=") values(";  
            for(int i=0;i<length;i++){  
                sql+="?";  
                //防止最后一个,  
                if(i<length-1){  
                    sql+=",";  
                }  
            }  
            sql+=");";  
            //System.out.println("添加数据的sql:"+sql);  
            //预处理SQL 防止注入  
            excutePs(sql,length,data);  
            //执行  
            ps.executeUpdate();  
            //关闭流  
            ps.close();  
            conn.close();    //关闭数据库连接  
        } catch (SQLException e) {  
            System.out.println("替换数据失败" + e.getMessage());  
        }  
    }
    
    
      
    /** 
     * 查询表  【查询结果的顺序要和数据库字段的顺序一致】 
     * @param tabName 表名 
     * @param fields 参数字段  
     * @param data  参数字段数据 
     * @param tab_fields 数据库的字段 
     */  
    public static String query(String tabName,String[] fields,String[] data,String[] tab_fields){  
        conn = getConnection();    // 首先要获取连接,即连接到数据库  
        String str = "";
        try {  
            String sql = "select * from  "+tabName+" where ";  
             int length = fields.length;  
             for(int i=0;i<length;i++){  
                    sql+=fields[i]+" = ? ";  
                    //防止最后一个,  
                    if(i<length-1){  
                        sql+=" and ";  
                    }  
             }  
             sql+=";";  
             //System.out.println("查询sql:"+sql);  
            //预处理SQL 防止注入  
            excutePs(sql,length,data);  
            //查询结果集  
            ResultSet rs = ps.executeQuery();  
            //存放结果集  
            while(rs.next()){
            	for (int j = 0; j < tab_fields.length; j++){
            		str += rs.getString(tab_fields[j]) + ",";
            	}
            }
            //关闭流  
            rs.close();  
            ps.close();  
            conn.close();    //关闭数据库连接  
        } catch (SQLException e) {  
             System.out.println("查询失败" + e.getMessage());  
        }  
        return str;  
    }  
      
    
    /** 
     * 查询表  【查询有多少行 符合条件的】 
     * @param tabName 表名 
     * @param fields 参数字段  
     * @param data  参数字段数据 
     */  
    public static int getCount(String tabName,String[] fields,String[] data){  
        conn = getConnection();    // 首先要获取连接,即连接到数据库  
        int num = 0;  
        try {  
            String sql = "select count(*) from  "+tabName+" where ";  
             int length = fields.length;  
             for(int i=0;i<length;i++){  
                    sql+=fields[i]+" = ? ";  
                    //防止最后一个,  
                    if(i<length-1){  
                        sql+=" and ";  
                    }  
             }  
             sql+=";";  
             //System.out.println("查询sql:"+sql);  
            //预处理SQL 防止注入  
            excutePs(sql,length,data);  
            //查询结果集  
            ResultSet rs = ps.executeQuery();  
            //存放结果集  
            while(rs.next()){  
            	num = rs.getInt(1);  
            }  
            //关闭流  
            rs.close();  
            ps.close();  
            conn.close();    //关闭数据库连接  
        } catch (SQLException e) {  
             System.out.println("查询失败" + e.getMessage());  
        }  
        return num;  
    }  
    
      
    /** 
     * 用于注入参数 
     * @param ps 
     * @param data 
     * @throws SQLException  
     */  
     private static void excutePs(String sql,int length,String[] data) throws SQLException{  
         //预处理SQL 防止注入  
         ps = conn.prepareStatement(sql);  
         //注入参数  
         for(int i=0;i<length;i++){  
              ps.setString(i+1,data[i]);  
         }  
     }  
    /** 
     * 清空表数据 
     * @param tabName 表名称 
     */  
    public static void delete(String tabName, String[] id){  
           conn = getConnection();    // 首先要获取连接,即连接到数据库  
          
           try {  
               String sql = "delete from  "+tabName+" where id = ? ;";   
               //System.out.println("删除数据的sql:"+sql);
               
               //预处理SQL 防止注入  
               excutePs(sql,1,id);  
               //执行  
               ps.executeUpdate();  
               //关闭流  
               ps.close();  
               conn.close();    //关闭数据库连接  
           } catch (SQLException e) {  
               System.out.println("删除数据失败" + e.getMessage());  
           }  
    }  

      
    /** 
     * 判断表是否存在 
     * @param tabName 
     * @return 
     */  
    public static boolean exitTable(String tabName){  
        boolean flag = false;  
          conn = getConnection();    // 首先要获取连接,即连接到数据库  
          try {  
              String sql = "select id from  "+tabName+";";   
              //预处理SQL 防止注入  
              ps = conn.prepareStatement(sql);  
              //执行  
              flag =  ps.execute();  
              //关闭流  
              ps.close();  
              conn.close();    //关闭数据库连接  
          } catch (SQLException e) {  
              System.out.println("判断表是否存在失败" + e.getMessage());  
          }  
        return flag;  
    }  
      
}
参考: http://blog.csdn.net/lovelong8808/article/details/44077521

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值