java将mysql的数据写入文件_Java&mysql:过滤文件内容,将新文件内容存入mysql数据库...

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

b0f8c2d9aefd72fdcd006f39cefe4dff.png

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

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

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 databasemydb;

mysql>usemydb;Databasechanged

#上面你就已经完成了一个数据库的创建,下面是建表

#因为建表中我没有截图,现在懒得打字了,so复制粘贴了一个菜鸟教程的,推荐大家去看

mysql> CREATE TABLErunoob_tbl(-> runoob_id INT NOT NULLAUTO_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.16sec)

mysql>#你可以通过

show tables;

#来查看你数据库里的表

#你可以通过desctablename;

来查看表的详细情况

#你可以通过select * fromtablename;

来查看表内的信息

##注意sql语句要加分号##

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

1 File file = new File("C:\\B.txt");2 try{3 FileReader fr = newFileReader(file);4 BufferedReader bufr = newBufferedReader(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.*;classConnectiotest {staticConnection con;staticPreparedStatement sql;staticResultSet 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();

}returncon;

}public static voidmain(String[] args) {

Connectiotest c= new Connectiotest(); //与数据库建立连接

c.getConnection();try { //************************

File file = new File("C:\\A.txt");

FileReader fr= newFileReader(file);

BufferedReader bufr= newBufferedReader(fr);

file= new File("C:\\B.txt");

FileWriter fw= newFileWriter(file);

BufferedWriter bufw= newBufferedWriter(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= newFileReader(file);

BufferedReader bufr= newBufferedReader(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();

}

}

}

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值