zoukankan      html  css  js  c++  java
  • JAVA通过poi对Excel数据在(jsp+ssh)环境下导入导出

    POI下载与安装 

      请到网站
    http://www.apache.org/dyn/closer.cgi/poi/右击超链接2.5.1.zip下载压缩包poi-bin-2.5.1-final-20040804.zip(或下载最新的这种压缩包),解压缩后得到如图2.1所示的目录结构。我们主要用到poi-2.5.1-final-20040804.jar这个库文件。请把poi-2.5.1-final-20040804.jar这个文件的路径添加到系统环境变量classpath中,否则无法编译下面的示例程序。

    1. 首先搭建ssh框架(这儿不做介绍);

    2. 导入jar包(如下):

    3. 导出:(下面以一个例子的形式)

    1.  新创建一个jsp页面如(export.jsp),在页面上添加如下代码:

    <a href="<%=path %>/indexAction!export.action">导出数据到excel</a>

    2.  进入indexAction.java文件,编写export方法由于要用到一个STUDENT类,就先编写STUDENT类,Student类代码如下:

    public class Student {
    private String studentId;
    private String studentName;
    private String studentSex;
    private String studentDormitory;
    private  String studentSept;
    public String getStudentId() {
    return studentId;
    }
    public void setStudentId(String studentId) {
    this.studentId = studentId;
    }
    public String getStudentName() {
    return studentName;
    }
    public void setStudentName(String studentName) {
    this.studentName = studentName;
    }
    public String getStudentSex() {
    return studentSex;
    }
    public void setStudentSex(String studentSex) {
    this.studentSex = studentSex;
    }
    public String getStudentDormitory() {
    return studentDormitory;
    }
    public void setStudentDormitory(String studentDormitory) {
    this.studentDormitory = studentDormitory;
    }
    public String getStudentSept() {
    return studentSept;
    }
    public void setStudentSept(String studentSept) {
    this.studentSept = studentSept;
    }
     
    }

    编写export方法:代码如下

    此类中需要导入的jar包如下:

    import java.io.IOException;
    import java.io.OutputStream;
    import java.util.List;
    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.HSSFHeader;
    import org.apache.poi.hssf.usermodel.HSSFRow;
    import org.apache.poi.hssf.usermodel.HSSFSheet;
    import org.apache.poi.hssf.usermodel.HSSFWorkbook;
    import org.apache.struts2.ServletActionContext;
     
        public String export()throws Exception
        {  
           
           
            List studentList=new ArrayList<Student>();//学生LIst
           
            for(int i=0;i<10;i++)
            {   Student student=new Student();//学生对象
                student.setStudentId("200908110"+i);
                student.setStudentName("杨波"+i);
                student.setStudentSex("男");
                student.setStudentDormitory("14-20"+i);
                student.setStudentSept("软件工程系");
                studentList.add(student);
            }
                 
            String []tableHeader={"学号","姓名","性别","寝室号","所在系"};
           
    short cellNumber=(short)tableHeader.length;//表的列数
            HSSFWorkbook workbook = new HSSFWorkbook();   //创建一个excel
            HSSFCell cell = null;                                    //Excel的列
            HSSFRow row = null;                                      //Excel的行
            HSSFCellStyle style = workbook.createCellStyle();        //设置表头的类型
            style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
            HSSFCellStyle style1 = workbook.createCellStyle();       //设置数据类型
            style1.setAlignment(HSSFCellStyle.ALIGN_CENTER);
            HSSFFont font = workbook.createFont();                 //设置字体
            HSSFSheet sheet = workbook.createSheet("sheet1");        //创建一个sheet
            HSSFHeader header = sheet.getHeader();//设置sheet的头
    try {              
                if(studentList.size() < 1 ){
                    header.setCenter("查无资料");
                }else{
                    header.setCenter("学生表");
                    row = sheet.createRow(0);
                    row.setHeight((short)400);
                    for(int k = 0;k < cellNumber;k++){
                        cell = row.createCell(k);//创建第0行第k列
                        cell.setCellValue(tableHeader[k]);//设置第0行第k列的值
                        sheet.setColumnWidth(k,8000);//设置列的宽度
                        font.setColor(HSSFFont.COLOR_NORMAL);      // 设置单元格字体的颜色.
                        font.setFontHeight((short)350); //设置单元字体高度
                        style1.setFont(font);//设置字体风格
                        cell.setCellStyle(style1);
                    }
                            
                    for(int i = 0 ;i < studentList.size() ;i++){                            
                        Student student1 = (Student)studentList.get(i);//获取student对象
                        row = sheet.createRow((short) (i + 1));//创建第i+1行
                        row.setHeight((short)400);//设置行高
                       
                        if(student1.getStudentId() != null){
                             cell = row.createCell(0);//创建第i+1行第0列
                             cell.setCellValue(student1.getStudentId());//设置第i+1行第0列的值
                    cell.setCellStyle(style);//设置风格
                        }
                        if(student1.getStudentName() != null){
                             cell = row.createCell(1); //创建第i+1行第1列
     
                             cell.setCellValue(student1.getStudentName());//设置第i+1行第1列的值
     
                             cell.setCellStyle(style); //设置风格
                        }
    //由于下面的和上面的基本相同,就不加注释了
                        if(student1.getStudentSex() != null){
                             cell = row.createCell(2);
                             cell.setCellValue(student1.getStudentSex());
                             cell.setCellStyle(style);
                        }
                        if(student1.getStudentDormitory()!= null){
                             cell = row.createCell(3);
                             cell.setCellValue(student1.getStudentDormitory());
                             cell.setCellStyle(style);
                        }
                        if(student1.getStudentSept() != null){
                             cell = row.createCell(4);
                             cell.setCellValue(student1.getStudentSept());
                             cell.setCellStyle(style);
                        }
                       
                    }
                   
                }
               
            } catch (Exception e) {
                e.printStackTrace();
            }
           
      
            HttpServletResponse response = null;//创建一个HttpServletResponse对象
            OutputStream out = null;//创建一个输出流对象
            try {
                response = ServletActionContext.getResponse();//初始化HttpServletResponse对象
                out = response.getOutputStream();//
              
        StringheaderStr ="student学生";
        headerStr =new String(headerStr.getBytes("gb2312"), "ISO8859-1");//headerString为中文时转码
        response.setHeader("Content-disposition","attachment; filename="+    headerStr+".xls");//filename是下载的xls的名,建议最好用英文
                response.setContentType("application/msexcel;charset=UTF-8");//设置类型
                response.setHeader("Pragma","No-cache");//设置头
                response.setHeader("Cache-Control","no-cache");//设置头
                response.setDateHeader("Expires", 0);//设置日期头
                workbook.write(out);
                out.flush();
                workbook.write(out);
            } catch (IOException e) {
                e.printStackTrace();
            }finally{
                try{
                   
                    if(out!=null){
                        out.close();
                    }
                   
                }catch(IOException e){
                    e.printStackTrace();
                }
               
            }
           
            return null;
       }
    注:最好返回null,否则有可能报错。

    4.数据的导入(以例子的形式展示)

     1.jsp页面的编写:在页面上添加如下代码

    其中action可以自己编写,table标签的内容可以不要。(DEMO页面添加TABLE标签主要是展示导入效果)

    <s:form action="indexAction!importExcel.action" method="post" enctype="multipart/form-data" theme="simple">
     
    <td>
    <s:file name="excelFile" id="excelFile" cssStyle="160px"></s:file>//选择导入的文件
    </td>
    <td>
    <input type="submit" value="导入学生数据"/>
    </td>
    </s:form>
    //下面是展示导入效果
    <table>
    <th>学号</th><th>姓名</th><th>性别</th><th>寝室号</th><th>所在系</th>
    <s:iterator value="stuList">
    <tr>
    <td>
    <s:property value="studentId"/>
    </td>
    <td>
    <s:property value="studentName"/>
    </td>
    <td>
    <s:property value="studentSex"/>
    </td>
    <td>
    <s:property value="studentDormitory"/>
    </td>
    <td>
    <s:property value="studentSept"/>
    </td>
    </tr>
    </s:iterator>
    </table>

    2.strus.xml编写(如果要展示效果,DEMo就编写的返回的页面如下)

    <action name="indexAction" class="com.dev.iex.action.IndexAction">
                <result name="SUCCESS">/index.jsp</result>
       </action>

    3. java代码如下

    在indexAction中添加 

    Import的类:

    import java.io.File;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.util.ArrayList;
    import java.util.List;
     
    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.HSSFHeader;
    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.ss.usermodel.Workbook;
    import org.apache.poi.xssf.usermodel.XSSFCell;
    import org.apache.poi.xssf.usermodel.XSSFRow;
    import org.apache.poi.xssf.usermodel.XSSFSheet;
    import org.apache.poi.xssf.usermodel.XSSFWorkbook;
    import org.apache.struts2.ServletActionContext;
    import com.dev.iex.po.Student;
      定义的的变量:
    private File excelFile;//File对象,目的是获取页面上传的文件
    private  List<Student> stuList=new ArrayList<Student>();
     定义的方法:
     public File getExcelFile() {
        return excelFile;
    }
    public void setExcelFile(File excelFile) {
        this.excelFile = excelFile;
    }
    public List<Student> getStuList() {
        return stuList;
    }
    public void setStuList(List<Student> stuList) {
        this.stuList = stuList;
    }
     
    主要编写的是importExcel方法,如下:
        @SuppressWarnings("finally")
    public String importExcel()throws Exception
    {        
        
        String id=null;
        String name=null;
        String  sex=null;
        String  Dormitory=null;
        String Sept=null;
         
        Workbook workbook = null;
        int k=0;
        int flag = 0;   //指示指针所访问的位置
        if(excelFile!=null)
        {
            String path=excelFile.getAbsolutePath();//获取文件的路径
             try {
                workbook = new XSSFWorkbook(path);//初始化workbook对象
                for (int numSheets = 0; numSheets < workbook.getNumberOfSheets(); numSheets++) {                                                //读取每一个sheet 
                     System.out.println("2007版进入读取sheet的循环");
                        if (null != workbook.getSheetAt(numSheets)) {   
                            XSSFSheet aSheet = (XSSFSheet)workbook.getSheetAt(numSheets);//定义Sheet对象
                            for (int rowNumOfSheet = 0; rowNumOfSheet <= aSheet.getLastRowNum(); rowNumOfSheet++) { 
                               //进入当前sheet的行的循环  
                                if (null != aSheet.getRow(rowNumOfSheet)) {
                                    XSSFRow  aRow = aSheet.getRow(rowNumOfSheet); //定义行,并赋值
                                    for (int cellNumOfRow = 0; cellNumOfRow <= aRow.getLastCellNum(); cellNumOfRow++)
                                    {                          //读取rowNumOfSheet值所对应行的数据 
                                       XSSFCell  xCell = aRow.getCell(cellNumOfRow); //获得行的列数                                                           //获得列值  
                                       //System.out.println("type="+xCell.getCellType());
                                       if (null != aRow.getCell(cellNumOfRow))
                                       {
                                          
                                            if(rowNumOfSheet == 0)
                                            {                                                                                   // 如果rowNumOfSheet的值为0,则读取表头,判断excel的格式和预定格式是否相符             
                                                   if(xCell.getCellType() == XSSFCell .CELL_TYPE_NUMERIC)
                                                   {
                                                   
                                                 }else if(xCell.getCellType() == XSSFCell .CELL_TYPE_BOOLEAN)
                                                 {
                                               
                                                 }else if(xCell.getCellType() == XSSFCell .CELL_TYPE_STRING)
                                                 {
                                                if(cellNumOfRow == 0)
                                                {  
                                                     if(xCell.getStringCellValue().replace('	', ' ').replace('
    ', ' ').replace('
    ', ' ').trim().equals("学号"))
                                                     {
                                                        flag++;
                                                     }else{
                                                       System.out.println("错误:第一行的学号不符合约定格式");
                                                     }
                                                }else if(cellNumOfRow == 1)
                                                {
                                                     if(xCell.getStringCellValue().replace('	', ' ').replace('
    ', ' ').replace('
    ', ' ').trim().equals("姓名"))
                                                     {
                                                         flag++;
                                                     }else{
                                                         System.out.println("错误:第一行的姓名不符合约定格式");
                                                     }               
                                                 }else if(cellNumOfRow == 2)
                                                 {
                                                     if(xCell.getStringCellValue().replace('	', ' ').replace('
    ', ' ').replace('
    ', ' ').trim().equals("性别")){
                                                         flag++;
                                                        
                                                     }else{
                                                     System.out.println("第一行的性别不符合约定格式");
            }
                                                    
                                                 }else if (cellNumOfRow == 3) {
                                                     if(xCell.getStringCellValue().replace('	', ' ').replace('
    ', ' ').replace('
    ', ' ').trim().equals("寝室号"))
                                                     {
                                                         flag++;
                                                         System.out.println("=========flag:" + flag);
                                                     }else{
                                                     System.out.println("第一行的寝室号不符合约定格式");
            }
                                                    
                                                 }else if (cellNumOfRow == 4)
            {
                                                     if(xCell.getStringCellValue().replace('	', ' ').replace('
    ', ' ').replace('
    ', ' ').trim().equals("所在系")){
                                                         flag++;
                                                         System.out.println("=========flag:" + flag);
                                                      }else{
                                                     System.out.println("第一行的所在系不符合约定格式");
            }
            }
          }
        }
        else {
                                           
        //rowNumOfSheet != 0 即开始打印内容
     
                                if(id != null && name != null && sex != null && Dormitory != null && Sept != null ){
                                   Student stu=new Student();
                                   stu.setStudentId(id);
                                   stu.setStudentName(name);
                                   stu.setStudentSept(Sept);
                                   stu.setStudentSex(sex);
                                   stu.setStudentDormitory(Dormitory);
                                   stuList.add(stu);
                                    k++;
                                }
                 } //获得一行,即读取每一行  
                }  
                    //读取每一个sheet
               
                 }
                }catch (Exception e) {
                        /********************************************                         下面使用的是2003除了workbook的赋值不同其它与2007基本相同,就不作介绍了
                         *********************************************
                InputStream is = new FileInputStream(path);       
                workbook = new HSSFWorkbook(is);
                try {
                     for (int numSheets = 0; numSheets < workbook.getNumberOfSheets(); numSheets++) {                                                      //读取每一个sheet 
                          System.out.println("2003版进入读取sheet的循环");
                        if (null != workbook.getSheetAt(numSheets)) {   
                            HSSFSheet aSheet = (HSSFSheet)workbook.getSheetAt(numSheets);
                            for (int rowNumOfSheet = 0; rowNumOfSheet <= aSheet.getLastRowNum(); rowNumOfSheet++) {                                    //获得一行  
                             
                                if (null != aSheet.getRow(rowNumOfSheet)) {
                                    HSSFRow  aRow = aSheet.getRow(rowNumOfSheet);
                                    for (int cellNumOfRow = 0; cellNumOfRow <= aRow.getLastCellNum(); cellNumOfRow++) {                                 //读取rowNumOfSheet值所对应行的数据 
                                       HSSFCell  aCell = aRow.getCell(cellNumOfRow);                                                                 //获得列值  
                                      
                                       if (null != aRow.getCell(cellNumOfRow)){
                                            if(rowNumOfSheet == 0){                                                                                      // 如果rowNumOfSheet的值为0,则读取表头,判断excel的格式和预定格式是否相符             
                                                if(aCell.getCellType() == HSSFCell .CELL_TYPE_NUMERIC){
                                                 }else if(aCell.getCellType() == HSSFCell .CELL_TYPE_BOOLEAN){
                                                 }else if(aCell.getCellType() == HSSFCell .CELL_TYPE_STRING){
                                                  if(cellNumOfRow == 0){  
                                                         if(aCell.getStringCellValue().replace('	', ' ').replace('
    ', ' ').replace('
    ', ' ').trim().equals("学号")){
                                                            flag++;
                                                            System.out.println("=========flag:" + flag);
                                                         }else{
                                                           System.out.println("错误:第一行的学号不符合约定格式");
                                                         }
                                                    }else if(cellNumOfRow == 1){
                                                         if(aCell.getStringCellValue().replace('	', ' ').replace('
    ', ' ').replace('
    ', ' ').trim().equals("姓名")){
                                                             flag++;
                                                             System.out.println("=========flag:" + flag);
                                                         }else{
                                                             System.out.println("错误:第一行的姓名不符合约定格式");
                                                         }               
                                                     }else if(cellNumOfRow == 2){
                                                         if(aCell.getStringCellValue().replace('	', ' ').replace('
    ', ' ').replace('
    ', ' ').trim().equals("性别")){
                                                             flag++;
                                                             System.out.println("=========flag:" + flag);
                                                         }else{
                                                         System.out.println("第一行的性别不符合约定格式");
                                                         }
                                                        
                                                     }else if (cellNumOfRow == 3){
                                                         if(aCell.getStringCellValue().replace('	', ' ').replace('
    ', ' ').replace('
    ', ' ').trim().equals("寝室号")){
                                                             flag++;
                                                             System.out.println("=========flag:" + flag);
                                                         }else{
                                                         System.out.println("第一行的寝室号不符合约定格式");
                                                         }
                                                        
                                                     }else if (cellNumOfRow == 4){
                                                         if(aCell.getStringCellValue().replace('	', ' ').replace('
    ', ' ').replace('
    ', ' ').trim().equals("所在系")){
                                                             flag++;
                                                             System.out.println("=========flag:" + flag);
                                                         }else{
                                                         System.out.println("第一行的所在系不符合约定格式");
                                                         }
                                                     }
                                                 }
                                            }
                                            else {
                                                if(aCell.getCellType() == HSSFCell .CELL_TYPE_NUMERIC){                                                                         //为数值型 
                                                    System.out.println("======进入XSSFCell .CELL_TYPE_NUMERIC模块==========");
                                                    if(cellNumOfRow == 0){
                                                            id = String.valueOf(aCell.getStringCellValue().replace('	', ' ').replace('
    ', ' ').replace('
    ', ' ').trim());
                                                            if(id == null){
                                                                System.out.println("错误:在Sheet"+(numSheets+1)+"中的第"+(rowNumOfSheet+1)+"行的第"+(cellNumOfRow+1)+"列的学号不能为空");
                                                            }
                                                        }else if(cellNumOfRow == 1){                                                                                           
                                                            name = String.valueOf(aCell.getStringCellValue().replace('	', ' ').replace('
    ', ' ').replace('
    ', ' ').trim());
                                                            if(name == null){
                                                                System.out.println("错误:在Sheet"+(numSheets+1)+"中的第"+(rowNumOfSheet+1)+"行的第"+(cellNumOfRow+1)+"列的姓名不能为空");
                                                            }
                                                        }else if(cellNumOfRow == 2){                                                                                           
                                                            sex = String.valueOf(aCell.getStringCellValue().replace('	', ' ').replace('
    ', ' ').replace('
    ', ' ').trim());
                                                            if(sex == null){
                                                                System.out.println("错误:在Sheet"+(numSheets+1)+"中的第"+(rowNumOfSheet+1)+"行的第"+(cellNumOfRow+1)+"列的性别不能为空");
                                                            }                                              
                                                        }else if (cellNumOfRow == 3){                                                                                                                                                   Dormitory = String.valueOf(aCell.getStringCellValue().replace('	', ' ').replace('
    ', ' ').replace('
    ', ' ').trim());
                                                            if(Dormitory == null){
                                                             System.out.println("错误:在Sheet"+(numSheets+1)+"中的第"+(rowNumOfSheet+1)+"行的第"+(cellNumOfRow+1)+"列的寝室号不能为空");
                                                            }
                                                        }else if (cellNumOfRow == 4){                                                                                                                                                   Sept = String.valueOf(aCell.getStringCellValue().replace('	', ' ').replace('
    ', ' ').replace('
    ', ' ').trim());
                                                            if(Sept == null){                      
                                                                System.out.println("错误:在Sheet"+(numSheets+1)+"中的第"+(rowNumOfSheet+1)+"行的第"+(cellNumOfRow+1)+"列的所在系不能为空");
                                                            }
                                                       
                                                        }                                          
                                                }else if(aCell.getCellType() == HSSFCell .CELL_TYPE_STRING){                                                                      //为字符串型 
                                                    System.out.print("===============进入XSSFCell .CELL_TYPE_STRING模块============");
                                                    if(cellNumOfRow == 0){
                                                            id = aCell.getStringCellValue().replace('	', ' ').replace('
    ', ' ').replace('
    ', ' ').trim();
                                                            if(id == null){
                                                                System.out.println("错误:在Sheet"+(numSheets+1)+"中的第"+(rowNumOfSheet+1)+"行的第"+(cellNumOfRow+1)+"列的学号不能为空");
                                                            }
                                                        }else if(cellNumOfRow == 1){                                                                                           
                                                            name = aCell.getStringCellValue().replace('	', ' ').replace('
    ', ' ').replace('
    ', ' ').trim();
                                                            if(name == null){
                                                                System.out.println("错误:在Sheet"+(numSheets+1)+"中的第"+(rowNumOfSheet+1)+"行的第"+(cellNumOfRow+1)+"列的姓名不能为空");
                                                            }
                                                        }else if(cellNumOfRow == 2){                                                                                           
                                                            sex = aCell.getStringCellValue().replace('	', ' ').replace('
    ', ' ').replace('
    ', ' ').trim();
                                                            if(sex == null){
                                                                System.out.println("错误:在Sheet"+(numSheets+1)+"中的第"+(rowNumOfSheet+1)+"行的第"+(cellNumOfRow+1)+"列的性别不能为空");
                                                            }                                              
                                                        }else if (cellNumOfRow == 3){                                                                                          
                                                            Dormitory =aCell.getStringCellValue().replace('	', ' ').replace('
    ', ' ').replace('
    ', ' ').trim();
                                                            if(Dormitory == null){
                                                             System.out.println("错误:在Sheet"+(numSheets+1)+"中的第"+(rowNumOfSheet+1)+"行的第"+(cellNumOfRow+1)+"列的寝室号不能为空");
                                                            }
                                                        }else if (cellNumOfRow == 4){                                                                                                                                                   Sept =aCell.getStringCellValue().replace('	', ' ').replace('
    ', ' ').replace('
    ', ' ').trim();
                                                            if(Sept == null){                     
                                                                System.out.println("错误:在Sheet"+(numSheets+1)+"中的第"+(rowNumOfSheet+1)+"行的第"+(cellNumOfRow+1)+"列的所在系不能为空");
                                                            }
                                                        }     
                                                   
                                                 }else if (aCell.getCellType() == HSSFCell .CELL_TYPE_BLANK) {
                                                  System.out.println("提示:在Sheet"+(numSheets+1)+"中的第"+(rowNumOfSheet+1)+"行的第"+(cellNumOfRow+1)+"列的值为空,请查看核对是否符合约定要求".toString());
                                                 }
                                            }                                                                        
                                        }                                 
                                    }
                                    
                                    if (flag!=5){
                                       System.out.println("请核对后重试");
                                       
                                        }
                                }
                    
                                if(id != null && name != null && sex != null && Dormitory != null && Sept != null ){
                                       Student stu=new Student();
                                       stu.setStudentId(id);
                                       stu.setStudentName(name);
                                       stu.setStudentSept(Sept);
                                       stu.setStudentSex(sex);
                                       stu.setStudentDormitory(Dormitory);
                                       stuList.add(stu);
                                        k++;
                                    }
                                
                            }
                            if(k!=0){
                              System.out.println("提示:您导入的数据已存在于数据库,请核对!k 为:" + k);
                              }else{
                                  System.out.println("提示:成功导入了"+k+"条数据");
                              }
                        }   
                    } 
               
                   
                    } catch (Exception ex) {
                        ex.printStackTrace();
                    }finally{
                        try {
                            if(is!=null)
                                is.close();
                        }catch (Exception e1) {
                                e1.printStackTrace();
                        }
                    }
                }
        }
        return "SUCCESS";
     
       
    }
  • 相关阅读:
    字符串常量池
    JDK1.8-java.lang.Object类源码阅读
    请给你的Mysql(InnoDB)表加上主键吧
    java线程占多大的内存,占哪里的内存?
    c# 多线程
    c# 遍历文件夹及其所有文件
    T-SQL 查询语句总结
    SQL Server使用LIKE运算符进行匹配查询
    sql server中关于批处理与脚本的简单介绍
    关于SQL Server数据表的五中约束
  • 原文地址:https://www.cnblogs.com/iteakey/p/4059724.html
Copyright © 2011-2022 走看看