将txt文件中的内容一行一行导入数据库中,其实大部分操作还是连接数据库的操作,和数据库连接以后只需要使用io流读取txt文件中的内容,再用增删改查的方式就可以将txt文件写入数据库了。
连接数据库的操作具体可以参照这篇文章,讲的很详细了。
package util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class DButil {
public final static String URL = "jdbc:oracle:thin:@localhost:1521:xe";
//localhost的具体数值可以点击数据库左上角的绿色加号,sid也是一样
public final static String USERNAME ="xxx";
//用户名
public final static String PWD = "xxx";
//口令
public final static String DRIVER = "oracle.jdbc.driver.OracleDriver";
//静态代码块
static{
try{
Class.forName(DRIVER);
System.out.println("成功");
}catch (ClassNotFoundException e){
System.out.println("失败");
e.printStackTrace();
}
}
public Connection getConnection() throws SQLException{
Connection conn = null;
conn = DriverManager.getConnection(URL,USERNAME,PWD);
return conn;
}
//关闭所有资源
public void closaAll(ResultSet rst,Statement stmt,Connection conn){
if(rst!= null){
try{
rst.close();
}catch(SQLException e){
e.printStackTrace();
}
}
if(stmt!= null){
try{
stmt.close();
}catch(SQLException e){
e.printStackTrace();
}
}
if(conn!= null){
try{
conn.close();
}catch(SQLException e){
e.printStackTrace();
}
}
}
}
用户名口令以及主机名端口sid等参数可以点击Oracle右上角绿色加号自己查看修改。
和数据库连接完就可以对于txt文件进行io流操作了
package util;
import java.io.*;
import java.sql.*;
public class tongbu {
public static void main(String[] args){
Connection conn = null;
ResultSet rst = null;
DButil db = new DButil();
BufferedReader reader =null;
try{
reader = new BufferedReader(new InputStreamReader(new FileInputStream("C:\\Users\\luyh\\Desktop\\test.txt")));
while (reader.ready()){
String s = reader.readLine();
System.out.println(s);
conn = db.getConnection();
String sql="insert into jilu(con) values(?)";
PreparedStatement st=conn.prepareStatement(sql);
st.setString(1, s);
int i = st.executeUpdate();
if (i>0) {
System.out.println("新增成功");
}else {
System.out.println("新增失败");
}
}
}catch (Exception e){
e.printStackTrace();
}finally{
if(reader != null){
try {
reader.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
db.closaAll(rst, stmt, conn);
}
}
}
但是如果运行以上代码,会发现从txt文件中插入数据库中的数据是不按照顺序排列的,但是很多时候插入数据库的内容是需要按照顺序排列好的,那么要怎么解决这个问题呢。数据库中有一种叫做sequence的东西,可以自行增长。可以查看上一篇博客,有关于sequence的内容。
那么就给数据库增加一列pid列,并且让pid列升序排列,这样就能解决不按照顺序排列的问题了。
需要修改的代码如下
String sql1 = "select seq_jilu.nextval as id from dual";//让序列增加
PreparedStatement st1=conn.prepareStatement(sql1);
String sql="insert into jilu(pid,con) values(?,?)"; //多插入一个列
rst = st1.executeQuery();
rst.next();
int id = rst.getInt(1); //用id接受数据库中序列的当前数
System.out.println(id);
rst.close();
st.setInt(1,id);
有了一个自增长的sequence作为每一个数据的一个id,就可以记录下数据写入数据库的顺序,这种数据在这项小需求中没有什么用,但是如果在以后的开发或者项目中可能会有需要顺序记录的需求。当然这里还可以使用触发器来完成,我还没有研究,以后研究出来了再写一篇博客或者就再这篇博客继续完善。