从文本文件读取数据存储到数据库

时间:2023-02-11 07:54:51

 ReadFile.java

package file;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
//读取文件类ReadFile
public class ReadFile {
//读取文件类ReadFile的构造方法
ReadFile(String tableName,String filePath) throws IOException,SQLException{
//创建数据库连接对象;调用同一个包中类DBUtil中的getConnection()方法
Connection conn=DBUtil.getConnection();
//sql语句
String sql="insert into "+tableName+"(id,username,password) values(?,?,?)";
//创建文件对象,filePath是文件的路径名称
File file=new File(filePath);
//在给定读取数据文件的情况下创建一个新的FileReader对象,FileReader对象是以字符流读取数据的而不是字节流。
FileReader fr=new FileReader(file);
//创建一个使用默认大小输入缓冲区的缓冲字符输入流(对象)
BufferedReader br=new BufferedReader(fr);
String line;
//声明int类型变量count;用于记录向数据库中添加数据的条数
int count=0;
//readLine()是读取一个文本行,遇到换行('\n')或回车('\r')认为某行终止
//返回该行内容包含的字符串,如果已到末尾则返回null

while((line = br.readLine()) !=null){ //这里说一下while(条件表达式){执行语句}循环语句,当条件表达式
//返回值为真时,则执行{}中语句,当执行完{}语句后重新判断条件表达式的返回值,直到表达式返回结果为假时,退出循环。
//获取子字符串,这里还可以用一个字符串分割的方法:info=line.split(',')。由于使用split()方法
//对字符或字符串内容分割后的结果存在字符串数组中,可以通过info[0],info[1]、、方式获取被分割后的内容

String username=line.substring(0, line.indexOf(','));
String password=line.substring(line.indexOf(',')+1, line.length());
System.out.println("username: "+username);
            System.out.println("password: "+password);
            //JDBC访问数据库步骤:4、创建PrepaeredStatement对象。创建预编译sql语句的PrepaeredStatement对象
            //sql语句被预编译并存储在PreparedStatement对象中,然后可以使用PreparedStatement对象高效的执行该sql语句

            PreparedStatement pstmt=conn.prepareStatement(sql);
            //给pstmt设置sql语句
            pstmt.setInt(1, count);
            pstmt.setString(2, username);
            pstmt.setString(3, password);
            //JDBC访问数据库步骤:5、执行SQL语句。执行更新了的sql语句,并返回更新了数据库中记录的条数值
            pstmt.executeUpdate();
            ++count;   
}
System.out.println("向数据库中添加了"+count+"条数据");
}
public static void main(String[] args) throws IOException,SQLException{
//实例化对象rf,调用了类ReadFile的构造方法;并传递参数,Twitter_account是数据库名,E:\\rfp\\rfpFile\\账号.txt是文件路径
ReadFile rf=new ReadFile("student","E:\\rfp\\rfpFile\\账号.txt");
}

}


DBUtil.java

package file;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
//JDBC访问数据库步骤:1、加载注册驱动。在Java程序中需要使用第三方(非JDK内置)的jar包,把软件包添加到程序的classpath(类路径)中。
//在Eclipse中添加软件包的方法与项目类型有关。 Java Web项目,直接将JDBC驱动的Jar文件复制到项目的web—inf/lib/下即可。

public class DBUtil {
public static  Connection getConnection(){
   //url:连接数据库的字符串。通常url中包含数据库的ip,端口,库名等。这里最后的test是我的数据库名。
String url="jdbc:mysql://localhost/test";
//连接数据库的用户名
String username="root";
//连接数据库的密码
String password="sa123";
Connection conn=null;
try {
try {
//JDBC访问数据库步骤:2、实例化数据库连接驱动类,并将其注册到DriverManager中。
    //JDBC驱动包添加完成后在程序中注册驱动的方法如下1、2两行,driver参数是JDBC驱动类的完整类名称

String dirver="com.mysql.jdbc.Driver";//1
//Java.lang.class类的forname方法可以根据类名初始化类实例,从而实现JDBC驱动类注册。
    Class.forName(dirver);//2
    //JDBC访问数据库步骤:3、建立数据库连接。建立数据库连接时通过java.sql.DriverManager类实现的,代码示例
    conn=DriverManager.getConnection(url, username, password);
   } catch (SQLException e) 
   {
// TODO Auto-generated catch block
e.printStackTrace();
   }

    } catch (ClassNotFoundException e)
    {
 // TODO Auto-generated catch block
 e.printStackTrace();
    }
return conn;
}
public static void main(String[] args) {
DBUtil db=new DBUtil();
Connection connection=db.getConnection();
try {
//判断数据库是否连接成功
if(!connection.isClosed())
 {
System.out.println("Successed connecting to database");
 }else
 {
System.out.println("Failed connecting to database");
 }
   } catch (SQLException e)
   {
// TODO Auto-generated catch block
e.printStackTrace();
   }
 System.out.println(connection.getClass().getName());
}
}
图形界面结果:

1、在没有插入数据之前我的数据库,数据库名test,表student,属性id,username,password

从文本文件读取数据存储到数据库

2、我要读入数据库的文本文件:账号.txt

从文本文件读取数据存储到数据库

3、程序运行后台显示的结果:

从文本文件读取数据存储到数据库

4、从文本文件读取数据并成功插入到数据库后的界面:

从文本文件读取数据存储到数据库

PS:1、本文章涉及了JDBC数据库连接知识,七个具体步骤链接:

            http://blog.csdn.net/u013003837/article/details/28887423

       2、本人把项目导出后上传了,欢迎一起学习,下载连接地址:

           http://download.csdn.net/detail/u013003837/7457527