• Java&mysql:过滤文件内容,将新文件内容存入mysql数据库


    在上一篇博文jdbc连接数据库中我已经简单介绍了如何连接到mysql数据库,今天要总结的是学长给我布置的一个小作业,把一个很大的已经用","分开了的一行一行的txt文件内容过滤掉注释(注释都用#标注着),生成新的文件,将新文件内容存到mysql数据库中。学长跟我说这个小作业以后也会应用到,作为一个小作业布置应该是挺好的。

    这是文件的一小小小小部分。

    然后这是把文件内容过滤同时存到一个新文件中的代码。

    		try {                                                //************************
    			File file = new File("C:\A.txt");
    			FileReader  fr = new FileReader(file);
    			BufferedReader bufr = new BufferedReader(fr);
    			
    			file = new File("C:\B.txt");
    			FileWriter fw = new FileWriter(file);
    			BufferedWriter bufw = new BufferedWriter(fw);
    			
    			String s = null;
    			while((s = bufr.readLine())!=null) {              
    		        if(s.startsWith("#")) { continue; }
    		        else {
    					bufw.write(s);
    					bufw.newLine();     
    		        }
    			}
    			bufr.close();
    			fr.close();
    			bufw.close();
    			fw.close();
    		} catch(Exception e) {
    			e.printStackTrace();
    		}                                                     //***************************
    

     用s这个字符串周转了一下。

    先把A.txt中每一行的值赋给s,下面是过滤。

    如果s不为空,进入循环,如果s是由#开始则无事发生,进入下一个循环,否则,就把s写入B.txt中。

    下面是把B.txt中的每一行存入到数据库中。

    要想完成这一步,得先有个数据库,数据库里有个表,表的属性对应着一行中用","分开的字符串。

    #在cmd中操作数据库
    #C:\mysql\bin是数据库bin的路径
    #因为mysql不区分大小写,我下面就都用小写字母表示了
    
    cd C:\mysql\bin
    net start mysql
    mysql -root -p
    
    #输完上面他会提醒你输入密码,输入完会自动进入mysql,有一个mqsql>的小标志
    Enter password:******
    mysql>create database mydb;
    mysql>use mydb;
    Database changed
    
    #上面你就已经完成了一个数据库的创建,下面是建表
    #因为建表中我没有截图,现在懒得打字了,so复制粘贴了一个菜鸟教程的,推荐大家去看
    mysql> CREATE TABLE runoob_tbl(
       -> runoob_id INT NOT NULL AUTO_INCREMENT,
       -> runoob_title VARCHAR(100) NOT NULL,
       -> runoob_author VARCHAR(40) NOT NULL,
       -> submission_date DATE,
       -> PRIMARY KEY ( runoob_id )
       -> )ENGINE=InnoDB DEFAULT CHARSET=utf8;
    Query OK, 0 rows affected (0.16 sec)
    mysql>
    
    #你可以通过
    show tables;
    #来查看你数据库里的表
    
    #你可以通过
    desc tablename;
    来查看表的详细情况
    
    #你可以通过
    select * from tablename;
    来查看表内的信息
    
    ##注意sql语句要加分号##


    弄完数据库,就可以继续往下进行了。我的表里有十一个属性。

     1 File file = new File("C:\B.txt");
     2         try {                                                 
     3             FileReader  fr = new FileReader(file);
     4             BufferedReader bufr = new BufferedReader(fr);
     5             sql = con.prepareStatement("insert into qws_parameters_are_separated_by_commas values(?,?,?,?,?,?,?,?,?,?,?)");
     6             String s = null;
     7             System.out.println("字符串分割:");
     8             while((s = bufr.readLine())!=null) {               //让s等于每一行
     9                 String[] arr = s.split(",");      
    10                 for(int x=0;x<11;x++) {                           
    11                     sql.setString(x+1,arr[x]);
    12                     
    13 } 14 sql.executeUpdate(); 15 }
    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    //////////////////其实中间这部分不要也完全可以,作用就是把数据库中你已经存入的数据展示出来,不过因为那个文件太大,java控制台根本显示不完///////////////////////
    16 sql = con.prepareStatement("select* from qws_parameters_are_separated_by_commas"); 17 res = sql.executeQuery("select* from qws_parameters_are_separated_by_commas"); 18 while(res.next()){ 19 String aa = res.getString("纵行1"); 20 String bb = res.getString("纵行2"); 21 String cc = res.getString("纵行3"); 22 String dd = res.getString("纵行4"); 23 String ee = res.getString("纵行5"); 24 String ff = res.getString("纵行6"); 25 String gg = res.getString("纵行7"); 26 String hh = res.getString("纵行8"); 27 String ii = res.getString("纵行9"); 28 String jj = res.getString("纵行10"); 29 String kk = res.getString("纵行11"); 30 System.out.print("||"+aa); 31 System.out.print("||"+bb); 32 System.out.print("||"+cc); 33 System.out.print("||"+dd); 34 System.out.print("||"+ee); 35 System.out.print("||"+ff); 36 System.out.print("||"+gg); 37 System.out.print("||"+hh); 38 System.out.print("||"+ii); 39 System.out.print("||"+jj); 40 System.out.print("||"+kk); 41 System.out.println(); 42 System.out.println(); 43 }
    44  //////////////////////////////////其实中间这部分不要/也完全可以///////////////////////////////////////
    45 sql.executeUpdate("delete from from qws_parameters_are_separated_by_commas"); 46 bufr.close(); 47 fr.close(); 48 } catch(Exception e ) { 49 e.printStackTrace(); 50 }


    然后加上前天晚上的连接数据库的小函数,当然jar包也得导,总体代码如下:

    import java.io.*;
    import java.sql.*;
    
     class Connectiotest {
        static Connection con;
        static PreparedStatement sql;
        static ResultSet res;
        public Connection getConnection() {   //数据库连接函数
            try {
                Class.forName("com.mysql.jdbc.Driver");  System.out.println("数据库驱动加载成功");
            } catch(ClassNotFoundException e){
                e.printStackTrace();
            }
            try {
                con = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/mydb?useSSL=false","root","");
                System.out.println("数据库连接成功");
            } catch (SQLException e) {
                e.printStackTrace();
            }
            return con;
        }
        
        public static void main(String[] args) {
            Connectiotest c = new Connectiotest();                 //与数据库建立连接
            c.getConnection();
            
            try {                                                //************************
                File file = new File("C:\A.txt");
                FileReader  fr = new FileReader(file);
                BufferedReader bufr = new BufferedReader(fr);
                
                file = new File("C:\B.txt");
                FileWriter fw = new FileWriter(file);
                BufferedWriter bufw = new BufferedWriter(fw);
                
                String s = null;
                while((s = bufr.readLine())!=null) {              
                    if(s.startsWith("#")) { continue; }
                    else {
                        bufw.write(s);
                        bufw.newLine();     
                    }
                }
                bufr.close();
                fr.close();
                bufw.close();
                fw.close();
            } catch(Exception e) {
                e.printStackTrace();
            }                                                     //***************************
            
            File file = new File("C:\B.txt");
            try {                                                 
                FileReader  fr = new FileReader(file);
                BufferedReader bufr = new BufferedReader(fr);
                sql = con.prepareStatement("insert into mytable(?,?,?,?,?,?,?,?,?,?,?)");
                String s = null;
                System.out.println("字符串分割:");
                while((s = bufr.readLine())!=null) {               //让s等于每一行
                    String[] arr = s.split(",");      
                    for(int x=0;x<11;x++) {                           
                        sql.setString(x+1,arr[x]);
                    }
                    sql.executeUpdate();
                }
                sql = con.prepareStatement("select* from mytable");
                    res = sql.executeQuery("select* from mytable");
                    while(res.next()){
                        String aa = res.getString("纵行1");
                        String bb = res.getString("纵行2");
                        String cc = res.getString("纵行3");
                        String dd = res.getString("纵行4");
                        String ee = res.getString("纵行5");
                        String ff = res.getString("纵行6");
                        String gg = res.getString("纵行7");
                        String hh = res.getString("纵行8");
                        String ii = res.getString("纵行9");
                        String jj = res.getString("纵行10");
                        String kk = res.getString("纵行11");
                        System.out.print("||"+aa);
                        System.out.print("||"+bb);
                        System.out.print("||"+cc);
                        System.out.print("||"+dd);
                        System.out.print("||"+ee);
                        System.out.print("||"+ff);
                        System.out.print("||"+gg);
                        System.out.print("||"+hh);
                        System.out.print("||"+ii);
                        System.out.print("||"+jj);
                        System.out.print("||"+kk);
                        System.out.println();
                        System.out.println();
            }
                  sql.executeUpdate("delete from mytable");
                   
                bufr.close();
                fr.close();
            } catch(Exception e ) {
                e.printStackTrace();
            }
        }
    }


    然后就成功了,嘻嘻开心。

  • 相关阅读:
    IE绝对定位元素神秘消失或被遮挡的解决
    14条最佳JS代码编写技巧
    Query中的$.getJSON
    理解JavaScript中的对象
    Javascript的IE和Firefox兼容性汇编
    window.location 与 window.location.href
    认识hasLayout主要IE浏览器css bug的一大罪恶根源
    C/C++版数据结构之排序算法
    C++关键字mutable
    C++关键字explicit
  • 原文地址:https://www.cnblogs.com/qjqj0-0/p/11254303.html
Copyright © 2020-2023  润新知