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();
        }
    }
}


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

原文地址:https://www.cnblogs.com/qjqj0-0/p/11254303.html