精华内容
下载资源
问答
  • 多个不同用户,将自己的数据库中不同表的数据导出,在一台电脑汇总。想用数据窗口实现,要怎么做?请大神指点。
  • 这次来总结一下导出的将数据库中的数据导出到excel表中的功能。其实和从excel表中把数据导入到数据库一样,关键在于jar包,代码都没有什么难度,先来看一下效果图: 点击页面中的导出按钮,就会下载一个excel文件...

    这次来总结一下导出的将数据库中的数据导出到excel表中的功能。其实和从excel表中把数据导入到数据库一样,关键在于jar包,代码都没有什么难度,先来看一下效果图:
    这里写图片描述
    点击页面中的导出按钮,就会下载一个excel文件,文件中保存了数据库中的数据如图:
    这里写图片描述

    好的整体的效果大概就是这样子,现在来看看具体代码是怎么实现的呢。首先看jsp页面。
    其实jsp页面没有什么特殊的,就是点击导出按钮触发一个action事件,然后进入action层。

    <html>
    <head>
    <script type="text/javascript">
    /**
     * 导出满足条件的报障单
     */
    function exportRepair(){
        var status=$('#status').val();
        var rid=$('#rid').val();
        var startTime=$('#startTime').val();
        var endTime=$('#endTime').val();
        var name=$('#name').val();
        var ename=$('#ename').val();
        var cyid = $("#cyid").val();
        //alert("参数:"+status+rid+startTime+endTime+name+ename+"结束");
        var url = "../PilotMS/repair_exportRepair?1=1";
        url += "&keywords=" + 0;
        url += "&status=" + status;
        url += "&rid=" + rid;
        url += "&startTime=" + startTime;
        url += "&endTime=" + endTime;
        url += "&name=" + name;
        url += "&ename=" + ename;   
        document.location.href = url;
    /*  $.post(
                '../PilotMS/repair_exportRepair',
                {keywords:0,status:status, rid:rid, startTime:startTime, endTime:endTime, name:name, ename:ename},
                function(data, status){
                    if (data){
                        repair.findAll(0, rid, startTime, endTime, name, cyid, status, ename, "1");
                    }
                }
            );*/
    
    }
    </script>
    </head>
    <body>
        <table height="100%" style="margin-top: -3px;">
            <tr>
                <td valign="middle" align="right" colspan="5"><button
                        class="save-btn" onclick="exportRepair()">导出</button></td>
            </tr>
        </table>
        </div>
    </body>
    </html>

    当然我这是基于struts2框架的,struts.xml还要进行配置,使得jsp页面的中的路径能够找到指定的action。我这里就不写了,相信大家伙能够使用自己的方法view层找到对应的controller层吧。
    然后在action中代码如下:

    
        /**
         * 导出报障单
         */
        public void exportRepair(){
            try {   
                pageNo = "1";
                repair = new Repair();      
                if(keywords.equals("0")){
                    String serialNum=null;
                    Company company = (Company) getSession().getAttribute(COMPANY);
                    Customer customer = (Customer) getSession().getAttribute(CUSTOMER);//***
                    if(company != null){
                    //  cyid = company.getCyid();
                        serialNum=company.getSerialNum();
                        repair.setType(COMPANY);
                    }
                    //****
                    if(customer != null){
                        //cid = customer.getCid();
                        serialNum=customer.getSerialNum();
                        repair.setType(CUSTOMER);
                    }
                    repair.setSerialNum(serialNum);
                    repair.setCyid(cyid);
                    repair.setName(name);
                    repair.setRid(rid);
                    repair.setStatus(status);
                    repair.setLongitude(startTime);
                    repair.setLatitude(endTime);
                    repair.setEname(ename);
                    repair.setOrderBy("time");// 按报修时间排序
                    list = repairBiz.findAll(repair, null);
                    if(list!=null&&list.size()>0){
                        page = new Page(Integer.parseInt(pageNo), list.size(), list.size());                    
                        list = repairBiz.findAll(repair, page);
                    }           
                }else if(keywords.equals("1")){
                    repair.setCyid(cyid);
                    repair.setRid(rid);
                    setStatus(4);
                    repair.setStatus(4);
                    repair.setOvertime("overtime");
                    list = repairBiz.findAll(repair, null);
                    if(list!=null&&list.size()>0){
                        page = new Page(Integer.parseInt(pageNo), list.size(), list.size());
                        list = repairBiz.findAll(repair, page);
                    }   
                }else if(keywords.equals("2")){
                    repair.setCyid(cyid);
                    repair.setRid(rid);
                    setStatus(5);
                    repair.setStatus(5);
                    repair.setGrade(1);
                    list = repairBiz.findAll(repair, null);
                    if(list!=null&&list.size()>0){
                        page = new Page(Integer.parseInt(pageNo), list.size(), list.size());
                        list = repairBiz.findAll(repair, page);
                    }   
                }                                       
                List<List<Object>> list1 = repairBiz.getExportRepairDataList(list);
                String[] headers={"序号","报障单号","报障日期","处理时间", "网点名称", "报障人","联系电话", "设备类型", "故障情况",
                        "处理方法", "结果", "工程师", "抽查回访结果","备注"};
                String fileName = "报障单";
                ExportExcel.excelOut(headers, list1, fileName, request, response);          
            } catch (Exception e) {
                // TODO: handle exception
                e.printStackTrace();
            }
        }   

    思路就是现在数据库中查询出先要导出的数据list,上面代码红的list就是从数据库中获得的数据,然后把数据进行处理成要导入到excel表中形式。那个就是上面代码的List

    
    public List<List<Object>> getExportRepairDataList(List<Repair> repairList) {
            // TODO Auto-generated method stub
            List<List<Object>> list = new ArrayList<List<Object>>();
            if(repairList != null && repairList.size() > 0){
                int count=0;
                for (Repair repair : repairList) {
                    List<Object> rowDataList = new ArrayList<Object>();
    
                    //序号
                    count++;
                    rowDataList.add(count);
                    //报障单号
                    if(repair.getRid()==null){
                        rowDataList.add("");
                    }else {             
                        rowDataList.add(""+repair.getRid());                    
                    }               
                    // 报障日期
                    if(repair.getCreateDate()==null){
                        rowDataList.add("");
                    }else {
                        String createTime=repair.getCreateDate().toString();
                        //System.out.println(createTime.substring(0, 11));
                        rowDataList.add(""+createTime.substring(0, 11));
    
                    }
    
                    // 处理时间
                    if(repair.getFinishDate()==null){
                        rowDataList.add("");
                    }else {
                        rowDataList.add(""+repair.getFinishDate().toString().substring(0, 11));
                    }   
    
                    // 网点名称
                    if(repair.getCompany()==null){
                        rowDataList.add("");
                    }else {
                        rowDataList.add(""+repair.getCompany());
                    }   
    
                    // 报障人
                    if(repair.getName()==null){
                        rowDataList.add("");
                    }else {
                        rowDataList.add(""+repair.getName());
                    }   
    
                    //联系电话
                    if(repair.getPhone()==null){
                        rowDataList.add("");
                    }else {
                        rowDataList.add(""+repair.getPhone());
                    }   
    
                    // 设备类型
                    if(repair.getMname()==null){
                        rowDataList.add("");
                    }else {
                        rowDataList.add(""+repair.getMname());
                    }   
    
                    //故障情况
                    if(repair.getContent()==null){
                        rowDataList.add("");
                    }else {
                        rowDataList.add(""+repair.getContent());
                    }   
    
                    //处理方法
                    if(repair.getSuggest()==null){
                        rowDataList.add("");
                    }else {
                        rowDataList.add(""+repair.getSuggest());
                    }   
    
                    //结果                
                    if(repair.getStatus()==0){
                        rowDataList.add("待响应");
                    }else if(repair.getStatus()==1){
                        rowDataList.add("转接中");
                    }else if(repair.getStatus()==2){
                        rowDataList.add("处理中");
                    }else if(repair.getStatus()==3){
                        rowDataList.add("已预约");
                    }else if(repair.getStatus()==4){
                        rowDataList.add("待评价");
                    }else if(repair.getStatus()==5){
                        rowDataList.add("已评价");
                    }else if(repair.getStatus()==7){
                        rowDataList.add("关单");
                    }else {
                        rowDataList.add("");
                    }
    
                    //工程师
                    if(repair.getEname()==null){
                        rowDataList.add("");
                    }else {
                        rowDataList.add(""+repair.getEname());
                    }   
    
                    //抽查回访结果
                    if(repair.getAvgScore()==null){
                        rowDataList.add("");
                    }else {
                        double  avgScore=Double.parseDouble(repair.getAvgScore());
                        if(avgScore==5){
                            rowDataList.add("非常满意");
                        }else if(avgScore==4){
                            rowDataList.add("满意");
                        }else if(avgScore==3){
                            rowDataList.add("一般般");
                        }else if(avgScore==2){
                            rowDataList.add("不满意");
                        }else if(avgScore==1){
                            rowDataList.add("非常不满意");
                        }else {
                            rowDataList.add("");
                        }               
                    }   
    
                    //备注                
                    rowDataList.add("");
    
                    list.add(rowDataList);
                }
            }
            return list;
        }
    

    这样一个基本的导出功能就已经实现了。附上ExportExcel.java文件,设置表格的样式。

    package com.pilot.util;
    
    import java.io.OutputStream;
    import java.net.URLEncoder;
    import java.util.List;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import org.apache.poi.hssf.usermodel.HSSFCell;
    import org.apache.poi.hssf.usermodel.HSSFCellStyle;
    import org.apache.poi.hssf.usermodel.HSSFFont;
    import org.apache.poi.hssf.usermodel.HSSFRow;
    import org.apache.poi.hssf.usermodel.HSSFSheet;
    import org.apache.poi.hssf.usermodel.HSSFWorkbook;
    import org.apache.poi.hssf.util.HSSFColor;
    
    public class ExportExcel {
        public static void excelOut(String[] cloumName, List<List<Object>> list,String fileName,
            HttpServletRequest request,HttpServletResponse response){  
            HSSFWorkbook workbook = new HSSFWorkbook();
            HSSFSheet sheet = workbook.createSheet(fileName);
            HSSFRow oneRow=sheet.createRow(0);
            oneRow.setHeight((short) 500);
            HSSFCell cell = null;
            HSSFCellStyle style = workbook.createCellStyle();
            style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
            style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
            HSSFFont font = workbook.createFont();
            font.setFontName("微软雅黑");
            style.setFont(font);
            style.setWrapText(true);
    
            HSSFCellStyle style1 = workbook.createCellStyle();
            style1.setAlignment(HSSFCellStyle.ALIGN_CENTER);
            style1.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
            style1.setFillForegroundColor(HSSFColor.AQUA.index);
            style1.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND); 
            style1.setFont(font); 
    
            HSSFRow row = sheet.createRow(0);    
            for(int i = 0; i < cloumName.length; i++){    
                //单元格  
                cell = row.createCell(i);    
                cell.setCellStyle(style1);    
                cell.setCellValue(cloumName[i]);   
            }    
    
            for (int i = 0; i < list.size(); i++){    
                row = sheet.createRow(i + 1);    
                List<Object> dataList = list.get(i);    
                for (int j = 0; j < dataList.size(); j++) {  
                    // 表格内容样式设置  
                    cell = row.createCell(j);
                    cell.setCellStyle(style);    
                    cell.setCellValue(String.valueOf(dataList.get(j)));   
                    sheet.autoSizeColumn(( short ) j);
                }  
             }  
    
            try{   
                response.reset();
                OutputStream os = response.getOutputStream();
                response.setHeader("Content-disposition","attachment; filename="+URLEncoder.encode(fileName, "utf-8")+".xls");//设定输出文件头
                response.setContentType("application/msexcel");//定义输出类型
                workbook.write(os);  
                os.close();
            } catch (Exception e){  
                 e.printStackTrace();    
            }
        }
    
        /**
         * 自定义表头的报表导出
         * @param interf 自定义表头接口实现
         * @param list 数据内容list
         * @param fileName 文件名称
         * @param headerRows 表头占据的行数
         * @param request HttpServletRequest
         * @param response HttpServletResponse
         */
        public static void excelOutWithCustomHeader(CustomHeaderInterf interf, List<List<Object>> list,String fileName, int headerRows, 
                HttpServletRequest request,HttpServletResponse response){  
            HSSFWorkbook workbook = new HSSFWorkbook();
            HSSFSheet sheet = workbook.createSheet(fileName);
            HSSFRow oneRow=sheet.createRow(0);
            oneRow.setHeight((short) 500);
            HSSFCell cell = null;
    
            // 内容单元格的样式
            HSSFCellStyle style = workbook.createCellStyle();
            style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
            style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
            HSSFFont font = workbook.createFont();
            font.setFontName("微软雅黑");
            style.setFont(font);
            style.setWrapText(true);
    
            // 表头单元格的样式
            HSSFCellStyle style1 = workbook.createCellStyle();
            style1.setAlignment(HSSFCellStyle.ALIGN_CENTER);
            style1.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
            style1.setFillForegroundColor(HSSFColor.AQUA.index);
            style1.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND); 
            style1.setFont(font); 
    
            HSSFRow row = sheet.createRow(0);    
            if(interf != null){
                // 调用自定义表头的实现方法
                interf.dealCustomHeader(sheet, style1);
            }
    
            for (int i = 0; i < list.size(); i++){    
                row = sheet.createRow(i + headerRows);    
                List<Object> dataList = list.get(i);    
                for (int j = 0; j < dataList.size(); j++) {  
                    // 表格内容样式设置  
                    cell = row.createCell(j);
                    cell.setCellStyle(style);    
                    cell.setCellValue(String.valueOf(dataList.get(j)));   
                    sheet.autoSizeColumn(( short ) j);
                }  
             }  
    
            try{ 
                response.reset();
                OutputStream os = response.getOutputStream();
                response.setHeader("Content-disposition","attachment; filename="+URLEncoder.encode(fileName, "utf-8")+".xls");//设定输出文件头
                response.setContentType("application/msexcel");//定义输出类型
                workbook.write(os);
                os.close();
            } catch (Exception e){  
                 e.printStackTrace();    
            }
        }
    
        /**
         * 自定义表头处理接口定义
         * @author 朱伟权
         */
        public interface CustomHeaderInterf{
    
            /**
             * 自定义表头处理方法
             * @param sheet excel的sheet对象
             * @param style 表头单元格样式
             */
            void dealCustomHeader(HSSFSheet sheet, HSSFCellStyle style);
        }
    }
    

    附上需要的jar包:
    http://download.csdn.net/download/qq_27790011/10149812

    其实还很简单的,不要把问题想的开复杂,动手试一试会发现原来你也可以!

    展开全文
  • 我现在在sqlsever有一个叫Phone的表,现在要用C#把它里面的数据导入到一个txt。 求各位大大,给段代码让小弟学习一下~
  • DB2数据库中数据的导入导出

    千次阅读 2007-12-29 19:39:00
    刚刚学会了DB2数据库的表中的数据怎么样导入导出,现在在blog上记录下来,免得以后忘掉。 导出:首先在磁盘某个目录下新建两个空白的文件xxx.csv(用来存放表中数据的输出文件)和log.csv(用来存放日志文件)。 例子...

            虽然个人感觉DB2没有oracle好用,但是做SOA,买了IBM的东西,数据库也用了IBM的DB2。刚刚学会了DB2数据库的表中的数据怎么样导入导出,现在在blog上记录下来,免得以后忘掉。 

           导出:首先在磁盘某个目录下新建两个空白的文件xxx.csv(用来存放表中数据的输出文件)和log.csv(用来存放日志文件)。

           例子:DB2数据库的中表 TEST_TABLE

           1 首先在磁盘建立一个testTbale的文件夹,然后在文件夹内新建两个空白的csv文件,分别是testTable.csv(用来存放表中数据的输出文件)和log.csv(用来存放日志文件)。

           2在DB2的控制中心中,打开数据库的表,把鼠标放在表TEST_TABLE上,点右键选择导出,在导出界面“定界选项”默认就可以了。

           3点确定可导出数据

           导入:导入时需要主意,在导入选项界面的“定界ASSCII(DEL)”旁的“DEL选项”,点“DEL选项”在其弹出的界面中,将“列定界符(DOLDEL)”改为“,”即逗号。

           例子:DB2数据库的中表 TEST_TABLE

            1 在表TEST_TABLE上,点右键选择导入。

            2在导入的弹出界面上,“导入文件”选项选择文件testTable.csv,“消息文件”选项选择文件log.csv

            3选中“定界ASSCII(DEL)”点“DEL选项”

            4在DEL选项”界面中,将“列定界符(DOLDEL)”改为“,”即逗号

            5点确定即可导入数据

     

            DB2数据库建立表的注意事项:表名和表中的字段名它们的长度是有限制的,大概是不超过30个字符;DB2中每张表的容量也是有限制的(具体多少不清楚),所以当表中字段较多时,需要合理分配类型为varchar的大小;如果表的id选用挣型,最好选择BIGINT类型。

    展开全文
  • 问题:给数据库中添加数据的sql文件没有了,怎么根据现在的数据库中的数据导出insert语句呢? 解决:首先给网上查找了一些资料 sql2008 里面的所有数据类型int,bigint,binary,bit,char,date,datetime,datetime2,...

    问题:给数据库中添加数据的sql文件没有了,怎么根据现在的数据库中表的数据导出insert语句呢?

    解决:首先给网上查找了一些资料

    sql2008 里面的所有数据类型
    int,bigint,binary,bit,char,date,datetime,datetime2,datetimeoffset,decimal,float,geography,geometry,hierarchyid,image,money,nchar,ntext,numeric,nvarchar,nvarchar,real,smalldatetime,smallint,smallmoney,sql_variant,text,time,timestamp,tinyint,uniqueidentifier,varbinary,varbinary,varchar,varchar,xml,

    select * from sys.all_objects
    
    --得到表中的列名与是否是自增的,当colstat为1的时候是自增的
    select name,colstat from syscolumns where id=object_id(N'T_User')
    
    --
    select name,DATA_TYPE,colstat from (select name,colstat from syscolumns where id=object_id(N'T_User')) as T1
        join (select column_name,data_type from information_schema.columns   
    where table_name = N'T_User'  ) T2
        on T1.name = T2.COLUMN_NAME
    
    
    --得到表中的列与类型
    select column_name,data_type from information_schema.columns   
    where table_name = N'T_User'  
    
    select * from information_schema.columns   
    where table_name = N'T_User'  
    
    
    --获取当前数据库的用户表信息
    select * from sysobjects where xtype='U' and category=0 
    select * from sys.tables
    select name from sys.tables
    
    
    --查询本地拥有的数据库
    --1
    select name from sys.databases where database_id>4 
    --2
    select dbid, name AS DB_NAME from master..sysdatabases where sid <> 0x01 

     我做了一个WinForm窗口,效果如图:

    cs代码部分(核心语句还是上面的sql语句):

    //返回已经有的用户创建的数据库
            /// <summary> 
            /// 返回已经有的用户创建的数据库
            /// </summary>
            /// <returns>数据库名称列表</returns>
            private List<string>  GetDataBase()
            {
                List<string> dataBaseList = new List<string>();
                string connStr = "Data Source=.;Initial Catalog=master;Integrated Security=True";
                using (SqlConnection conn = new SqlConnection(connStr))
                {
                    conn.Open();
                    using (SqlCommand cmd = conn.CreateCommand())
                    {
                        //cmd.CommandText = "select name from sys.databases where database_id>4 ";使用这句返回的只有用户创建的数据库
                        cmd.CommandText = "select name from sys.databases ";
                        SqlDataReader dataReader = cmd.ExecuteReader();
                        while (dataReader.Read())
                        {
                            dataBaseList.Add(Convert.ToString(dataReader[0]));
                        }
                    }
                }
                return dataBaseList;
            }
    
            //返回数据库中的表
            /// <summary>
            ///返回数据库中的表
            /// </summary>
            /// <param name="databaseName"></param>
            /// <returns></returns>
            private List<string> GetDataTable(string databaseName)
            {
                List<string> dataTableList = new List<string>();
                string connStr = string.Format("Data Source=.;Initial Catalog={0};Integrated Security=True",databaseName);
                using (SqlConnection conn = new SqlConnection(connStr))
                {
                    conn.Open();
                    using(SqlCommand cmd = conn.CreateCommand())
                    {
                        cmd.CommandText = "select name from sys.tables";
                        SqlDataReader dataReader = cmd.ExecuteReader();
                        while (dataReader.Read())
                        {
                            dataTableList.Add(Convert.ToString(dataReader[0]));
                        }
                    }
                }
                return dataTableList;
            }
    
            //返回数据库中某个表中的列
            /// <summary>
            /// 返回数据库中某个表中的列
            /// </summary>
            /// <param name="databaseName"></param>
            /// <param name="dataTableName"></param>
            /// <returns></returns>
            private List<string> GetColumns(string databaseName,string dataTableName)
            {
                List<string> columnsList = new List<string>();
                string connStr = string.Format("Data Source=.;Initial Catalog={0};Integrated Security=True", databaseName);
                using (SqlConnection conn = new SqlConnection(connStr))
                {
                    conn.Open();
                    using (SqlCommand cmd = conn.CreateCommand())
                    {
                       cmd.CommandText = string.Format("select column_name,data_type from information_schema.columns where table_name = N'{0}'",dataTableName);
    //                    cmd.CommandText = string.Format(@"select name,DATA_TYPE,colstat from (select name,colstat from syscolumns where id=object_id(N'{0}')) as T1
    //                            join (select column_name,data_type from information_schema.columns   
    //                            where table_name = N'{0}'  ) T2
    //                            on T1.name = T2.COLUMN_NAME", dataTableName);
                        SqlDataReader dataReader = cmd.ExecuteReader();
                        while (dataReader.Read())
                        {
                            columnsList.Add(string.Format("{0}",dataReader[0]));
                        }
                    }
                }
                return columnsList;
            }
    
            //返回数据库中某个表中的列与列的类型
            /// <summary>
            /// 返回数据库中某个表中的列与列的类型
            /// </summary>
            /// <param name="databaseName"></param>
            /// <param name="dataTableName"></param>
            /// <returns></returns>
            private Dictionary<string,string> GetColumnsInfo(string databaseName, string dataTableName)
            {
                Dictionary<string, string> columnsList = new Dictionary<string, string>();
                string connStr = string.Format("Data Source=.;Initial Catalog={0};Integrated Security=True", databaseName);
                using (SqlConnection conn = new SqlConnection(connStr))
                {
                    conn.Open();
                    using (SqlCommand cmd = conn.CreateCommand())
                    {                    
                        cmd.CommandText = string.Format(@"select name,DATA_TYPE,colstat from (select name,colstat from syscolumns where id=object_id(N'{0}')) as T1
                                                    join (select column_name,data_type from information_schema.columns   
                                                    where table_name = N'{0}'  ) T2
                                                    on T1.name = T2.COLUMN_NAME", dataTableName);
                        SqlDataReader dataReader = cmd.ExecuteReader();
                        while (dataReader.Read())
                        {
                            columnsList.Add(Convert.ToString(dataReader[0]),Convert.ToString(dataReader[1]));
                        }
                    }
                }
                return columnsList;
            }
    
            //根据选中的表与选中的列生成Select命令
            /// <summary>
            /// 根据选中的表与选中的列生成Select命令
            /// </summary>
            /// <param name="dataTableName"></param>
            /// <param name="selectedColumnsList"></param>
            /// <returns></returns>
            public string BuildSelectCommand(string dataTableName, List<string> selectedColumnsList)
            {
                return "select " + string.Join(",", selectedColumnsList.ToArray()) + " from " + dataTableName;
            }
    View Code

     当然,上面的几个方法完全可以封装到一个类里面,这样使用起来就更加方便了。

     于是,在原来的基础上,进行了改进,将有的部分封装成了类。这样层次性与重用性就更好了。

    效果如下:

    封装了一个DBHelper类与ItemHelper类,代码如下:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Data.SqlClient;
    
    namespace ExportCommandBaseDB
    {
        class DBHelper
        {
            public static Dictionary<string, string> colInfo;//表的列与对应的类型
    
            //执行命令
            /// <summary>
            /// 执行命令
            /// </summary>
            /// <param name="databaseName">数据库名称</param>
            /// <param name="commandText">命令语句</param>
            /// <returns>字符串列表</returns>
            public static List<string> ExecuteCommand(string databaseName, string commandText)
            {
                List<string> list = new List<string>();
                string connStr = string.Format("Data Source=.;Initial Catalog={0};Integrated Security=True", databaseName);
                using (SqlConnection conn = new SqlConnection(connStr))
                {
                    conn.Open();
                    using (SqlCommand cmd = conn.CreateCommand())
                    {
                        //cmd.CommandText = "select name from sys.databases where database_id>4 ";使用这句返回的只有用户创建的数据库
                        cmd.CommandText = commandText;
                        SqlDataReader dataReader = cmd.ExecuteReader();
                        while (dataReader.Read())
                        {
                            list.Add(Convert.ToString(dataReader[0]));
                        }
                    }
                }
                return list;
            }
    
            //返回已经有的用户创建的数据库
            /// <summary> 
            /// 返回已经有的用户创建的数据库
            /// </summary>
            /// <returns>数据库名称列表</returns>
            public static List<string> GetDataBase()
            {
                return ExecuteCommand("master", "select name from sys.databases");
            }
    
            //返回数据库中的表
            /// <summary>
            ///返回数据库中的表
            /// </summary>
            /// <param name="databaseName"></param>
            /// <returns></returns>
            public static List<string> GetDataTable(string databaseName)
            {
                return ExecuteCommand(databaseName, "select name from sys.tables");           
            }
    
            //返回数据库中某个表中的列
            /// <summary>
            /// 返回数据库中某个表中的列
            /// </summary>
            /// <param name="databaseName"></param>
            /// <param name="dataTableName"></param>
            /// <returns></returns>
            public static List<string> GetColumns(string databaseName, string dataTableName)
            {
                string cmdText = string.Format("select column_name,data_type from information_schema.columns where table_name = N'{0}'", dataTableName); 
                return ExecuteCommand(databaseName,cmdText);            
            }
    
            //返回数据库中某个表中的列与列的类型
            /// <summary>
            /// 返回数据库中某个表中的列与列的类型
            /// </summary>
            /// <param name="databaseName">数据库名称</param>
            /// <param name="dataTableName">表的名称</param>
            /// <returns></returns>
            public static Dictionary<string, string> GetColumnsInfo(string databaseName, string dataTableName)
            {
                Dictionary<string, string> columnsList = new Dictionary<string, string>();
                string connStr = string.Format("Data Source=.;Initial Catalog={0};Integrated Security=True", databaseName);
                using (SqlConnection conn = new SqlConnection(connStr))
                {
                    conn.Open();
                    using (SqlCommand cmd = conn.CreateCommand())
                    {
                        cmd.CommandText = string.Format(@"select name,DATA_TYPE,colstat from (select name,colstat from syscolumns where id=object_id(N'{0}')) as T1
                                                    join (select column_name,data_type from information_schema.columns   
                                                    where table_name = N'{0}'  ) T2
                                                    on T1.name = T2.COLUMN_NAME", dataTableName);
                        SqlDataReader dataReader = cmd.ExecuteReader();
                        while (dataReader.Read())
                        {
                            columnsList.Add(Convert.ToString(dataReader[0]), Convert.ToString(dataReader[1]));
                        }
                    }
                }
                colInfo = columnsList;
                return columnsList;
            }
    
            //根据选中的表与选中的列生成Select命令
            /// <summary>
            /// 根据选中的表与选中的列生成Select命令
            /// </summary>
            /// <param name="dataTableName">表的名称</param>
            /// <param name="selectedColumnsList">选中的列的列表</param>
            /// <returns>select语句命令</returns>
            public static string BuildSelectCommand(string dataTableName, List<string> selectedColumnsList)
            {
                return "select " + string.Join(",", selectedColumnsList.ToArray()) + " from " + dataTableName;
            }
    
            // 根据选中的列生成insert语句的格式
            /// <summary>
            /// 根据选中的列生成insert语句的格式
            /// </summary>
            /// <param name="dataTableName">表的名称</param>
            /// <param name="selectedItems">选中的列的列表</param>
            /// <returns>语句格式字符串</returns>
            public static string BuildInsertFormat(string dataTableName,List<string> selectedItems)
            {
                StringBuilder sb = new StringBuilder();
                sb.Append(string.Format("insert {0}(", dataTableName));
                sb.Append(string.Join(",", selectedItems.ToArray()));
                sb.Append(") values(");
                sb.Append(string.Join(",", BuildValueFormat(selectedItems).ToArray()));
                sb.Append(");");
                return sb.ToString();
            }
    
            //根据选中的列生成value部分的格式
            /// <summary>
            /// 根据选中的列生成value部分的格式
            /// </summary>
            /// <param name="selectedItems">选中的列的列表</param>
            /// <returns>value部分的格式</returns>
            private static List<string> BuildValueFormat(List<string> selectedItems)
            {
                List<string> listNumber = new List<string>();
                listNumber.AddRange(new string[] { "tinyint", "smallint", "bigint", "int", "bit", "decimal", "decimal", "numeric" });
    
                List<string> valueFormatList = new List<string>();
                int i = 0;
                foreach (string item in selectedItems)
                {
                    if (colInfo.ContainsKey(item))
                    {
                        if (listNumber.Contains(colInfo[item]))
                        {
                            valueFormatList.Add("{" + i++ + "}");
                        }
                        else
                        {
                            valueFormatList.Add("N'{" + i++ + "}'");
                        }                   
                    }
                }
                return valueFormatList;
            }
    
            //完全可以只调用这一句话来导出。参数自己写就可以。
            /// <summary>
            /// 根据选中的列导出插入内容的insert命令语句
            /// </summary>
            /// <param name="databaseName">数据库名称</param>
            /// <param name="dataTableName">表名称</param>
            /// <param name="selectedColumnsList">选中的列的列表</param>
            /// <param name="format">insert语句的格式</param>
            /// <returns>insert所有的语句</returns>
            public static string ExportInsertCmd(string databaseName, string dataTableName, List<string> selectedColumnsList,string format)
            {
                StringBuilder sb = new StringBuilder();
                string connStr = string.Format("Data Source=.;Initial Catalog={0};Integrated Security=True", databaseName);
                using (SqlConnection conn = new SqlConnection(connStr))
                {
                    conn.Open();
                    using (SqlCommand cmd = conn.CreateCommand())
                    {
                        cmd.CommandText = BuildSelectCommand(dataTableName, selectedColumnsList);
                        SqlDataReader dataReader = cmd.ExecuteReader();
                        object[] values = new object[dataReader.FieldCount];
                        while (dataReader.Read())
                        {
                            dataReader.GetValues(values);
                            for (int i = 0; i < dataReader.FieldCount; i++)
                            {
                                if (String.IsNullOrEmpty(values[i].ToString()))
                                {
                                    values[i] = "NULL";
                                }
                            }
                            sb.AppendLine(string.Format(format, values));
    
                        }
                    }
                }
                //对生成N'NULL'的进行替换
                sb = sb.Replace("N'NULL'", "NULL");
                return sb.ToString();
            }
        }
    }
    View Code
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.Collections;
    
    namespace ExportCommandBaseDB
    {
        class ItemHelper
        {
            /// <summary>
            /// 先清除comboBox中的所有项,然后将列表中的内容添加至其中,返回添加的项的个数
            /// </summary>
            /// <param name="comboBox">ComboBox控件名称</param>
            /// <param name="list">内容列表</param>
            /// <returns>添加的项的个数</returns>
            public static int ClearAndFill(ComboBox comboBox, ICollection collection)
            {
                //为了解决能接受List<Object>类型的参数,也能接受List<string>类型的,还能接收其它类型的参数
                //这里就使用了它们实现的统一的接口 IList
                //同理:CheckedListBox与ComboBox的继承自了ListControl类
                comboBox.Items.Clear();
                foreach (var item in collection)
                {
                    //如果list是List<string>类型的,则可以这样使用comboBox.Items.AddRange(list.ToArray());
                    comboBox.Items.Add(item);
                }            
                return collection.Count;            
            }
    
            /// <summary>
            /// 先清除listBox中的所有项,然后将列表中的内容添加至其中,返回添加的项的个数
            /// </summary>
            /// <param name="listBox">listBox控件名称</param>
            /// <param name="list">内容列表</param>
            /// <returns>添加的项的个数</returns>
            public static int ClearAndFill(ListBox listBox, ICollection collection)
            {
                //为了解决能接受List<Object>类型的参数,也能接受List<string>类型的,还能接收其它类型的参数
                //这里就使用了它们实现的统一的接口 IList
                //同理:CheckedListBox与ComboBox的继承自了ListControl类
                listBox.Items.Clear();
                foreach (var item in collection)
                {
                    //如果list是List<string>类型的,则可以这样使用comboBox.Items.AddRange(list.ToArray());
                    listBox.Items.Add(item);
                }
                return collection.Count;
            }
    
            /// <summary>
            /// 先清除CheckedListBox中的所有项,然后将列表中的内容添加至其中,返回添加的项的个数
            /// </summary>
            /// <param name="chkListBox">CheckedListBox控件名称</param>
            /// <param name="list">内容列表</param>
            /// <returns>添加的项的个数</returns>
            public static int ClearAndFill(CheckedListBox chkListBox, ICollection collection)
            {
                chkListBox.Items.Clear();
                foreach (var item in collection)
                {              
                    chkListBox.Items.Add(item);
                }
                return collection.Count;
            }
    
            /// <summary>
            /// 返回CheckedListBox选中的项的列表
            /// </summary>
            /// <param name="chkListBox">CheckedListBox名称</param>
            /// <returns>勾选的项的列表</returns>
            public static List<string> CheckedItemsList(CheckedListBox chkListBox)
            {
                List<string> list = new List<string>();
                foreach (object item in chkListBox.CheckedItems)
                {
                    list.Add(item.ToString());
                }
                return list;
            }
    
            //将CheckedListBox控件中的所有项全部选中
            /// <summary>
            /// 将CheckedListBox控件中的所有项全部选中
            /// </summary>
            /// <param name="chkListBox">CheckedListBox控件名称</param>
            public static void CheckedAll(CheckedListBox chkListBox)
            {            
                for (int i = 0; i < chkListBox.Items.Count; i++)
                {
                    chkListBox.SetItemChecked(i, true);    
                }
            }
    
            //反选
            /// <summary>
            /// 反选
            /// </summary>
            /// <param name="chkListBox">CheckedListBox控件名称</param>
            public static void ReverseCheck(CheckedListBox chkListBox)
            {
                for (int i = 0; i < chkListBox.Items.Count; i++)
                {
                    if (chkListBox.CheckedIndices.Contains(i))
                    {
                        chkListBox.SetItemChecked(i, false);
                    }
                    else
                    {
                        chkListBox.SetItemChecked(i, true);
                    }
                    
                }
            }
            
        }
    }
    View Code

    然后在窗体中,就是简单的调用了。

    可以去这里下载整个解决方案http://pan.baidu.com/share/link?shareid=565860261&uk=523599052

    转载于:https://www.cnblogs.com/dianyitongxiao/archive/2013/06/11/3131678.html

    展开全文
  • 请问java web 怎么数据库的数据导出到execl表格
  • 怎么用Oracle SQL Developer导出数据库中的表结构/数据 点击工具,选择数据库导出;右侧第一行的文件,点击浏览,给文件起一个名字,点击保存;右侧第二行连接,选择要连接的数据库;选择右侧DDL选项的终止符和美化...

    怎么用Oracle SQL Developer导出数据库中的表结构/数据

    点击工具,选择数据库导出;右侧第一行的文件,点击浏览,给文件起一个名字,点击保存;右侧第二行连接,选择要连接的数据库;选择右侧DDL选项的终止符和美化显示,点击下一步;再下一步;指定对象,点击中间数据库名下面的开始,然后点击你要导出的表名,按中间的箭头,要导出的表名就进入到右侧,下一步;指定数据(和指定对象一样的步骤),下一步;然后点击完成。

    展开全文
  • 不安装office的前提下,怎么数据库中的数据导出excel格式呢?
  • 我用Details View显示数据,要将sql数据库中的数据导出到excel中该怎么
  • 有感于昨晚另一个朋友发紧急邮件让我帮忙看看他一个ASA5数据库,说是密码忘了,用户名还不是DBA, 结果怎么也访问不了,经过一段时间摸索,终于成功将密码重置。以下是我在2011年4月份整理一篇短文, 重新整理...
  • 只要单击导出按钮,即可将相应表格的数据导出到Excel文件,再把Excel文件保存即可。 1 private void OutPutData_Click(object sender, RoutedEventArgs e) 2 { 3 //实例化Excel对象 4 //需要引入 Mi.....
  • 为什么要在SQL2008中使用导入导出呢? 导入导出是用于不同的文本格式来进行转换和交接的技术,下面我们...企业中的数据不一定会使用相同的数据格式存储数据,就需要把不同的数据格式进行相应的转换。 (这是BENET公...
  • vb.net中怎么把datagrdview中的数据导出成excel文档 用的是ACCESS数据库 一下是我写的代码,发生了一些问题,请大神们看看,帮忙修改一下。 这是导出按钮的单击事件 ''要先添加引用才能使用下列语句Microsoft.Office...
  • 一个记录日志的数据库,日增量巨大,需要将表进行分表,但查询的时候怎么办呢,那就联合查询,输入一个时间段,在这个时间段内找到相关联的表,用union all的方式将这些表的数据合在一起后,再进行查询。 还有这样的...
  • 数据库查询结果是这样 ![图片说明](https://img-ask.csdn.net/upload/201607/29/1469780560_791905.jpg) 要显示excel样式是这样 ![图片说明]...
  • 很久没有使用navicat for mysql 了,一些基本操作都遗忘。... 将mysql数据文件导入到数据库中:  1.在navicat 中创建一个mysql数据库链接,填写端口、用户名、密码  2.创建数据库  3.打开数据库  
  • 如何用JAVA将数据库中的数据导入到excel表格1、C语言产生ASCII数据文件,使用空格做作为数据分隔符。2入Excel,选择数据选项卡 / 获部数据工具组 / 自文本按钮3、进入数据导入框,在第一,选择使用数据分隔符(不选...
  • 本文是介绍利用POI导出数据到Excel表格,并且需要合并单元格。第一次写觉得还是有点难度,当时花了一天时间写这个导出,不过最后完成了,也没有觉得它很难。只要掌握它实现原理,不管怎么的导出都可以解决
  • SQL Server 2008 在Microsoft的数据平台上发布...可以将结构化、半结构化和非结构化文档的数据直接存储到数据库中。可以对数据进行查询、搜索、同步、报告和分析之类的操作。数据可以存储在各种设备上,通过Manageme
  • 使用此工具可以将存储在类似SQL的数据库中的小数据导出到Amazon S3,这些数据以压缩,字段和记录分隔格式(例如TSV或CSV)导出。 这主要是考虑到Amazon Redshift本身会导入此类格式而进行的。 仅当您的数据足够小以...
  • 一、设置导出数据库sql文件格式为MySQL,首先 Database -》Change current DBMS… 然后 DBMS 选择您MySQL版本,然后点确定就OK了。 二、如何连接MySQL数据库,并往库里生成数据表。 1、...
  • 请问ASP.NET(VB)将从SQL数据库中查询出来的数据导出为Excel文档?或者也可以导出txt文件。txt的话最好能对齐,用“Tab”空开,请问程序怎么编写?我要在保存的时候能够选择路径保存! 转载于:...
  • 本篇是转载文章,因为目前公司使用是sqldeveloper这个Oracle可视化工具,工作涉及到要导出数据库脚本等,个人觉得如下博客对sqldeveloper怎么导出脚本描述很清楚,所以分享一下。 博客地址:...
  • 使用cx_oracle导出数据至csv中文变成了乱码 可以采用以下代码解决 df.to_csv('users.csv', encoding='utf_8_sig')

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 494
精华内容 197
关键字:

数据库中的数据怎么导出