在上一篇博文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(); } } }
然后就成功了,嘻嘻开心。