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

Java 把树存入数据库 java 将文件存入数据库_sql

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

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

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

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