免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 13373 | 回复: 15
打印 上一主题 下一主题

如何从文本文件中逐条读取数据然后插入到数据库 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-04-23 16:04 |只看该作者 |倒序浏览
如果想从一个存有数据的文本中逐条的将每条记录读取出来并存入数据库中,用java编程实现,不知道有哪位大侠可以相助,多谢!对了,我用的数据库是东软的openbase5.0

论坛徽章:
0
2 [报告]
发表于 2003-04-25 09:33 |只看该作者

如何从文本文件中逐条读取数据然后插入到数据库

你的文本使用什么分割的?
可以用stringtokenizer

论坛徽章:
0
3 [报告]
发表于 2003-04-25 10:26 |只看该作者

如何从文本文件中逐条读取数据然后插入到数据库

我写了一个访问access数据库的例子,你可以参考一下

/*从文本文件中的内容读一行,便插入一行到数据库表中,直到读完文件为止*/
import javax.swing.*;
import java.awt.*;
import javax.swing.event.*;
import java.awt.event.*;
import java.io.*;
import java.sql.*;

public class DBhandle{
  public DBhandle(){
  }

  public void getText(){
    String str1 = "test";
    File fil = new File("d:/else/" + str1 +".txt";
    FileReader fr = null;
    char[] buf = new char[1000];

    try{
      fr = new FileReader(fil);
      int len = fr.read( buf,0,(int)fil.length() );
      String context = new String(buf);
      int start = 0, end = 0;
      String temp1 = null;
      String temp2 = null;

      //indexOf允许你判断一个字符串是否存在于一个更长的字符串中以及它所处的位置
      while( (end = context.indexOf(13,start) ) >;= 0){
        //charAt函数返回在字符串中字符处在给定的位置
        if( context.charAt(end + 1) == 10){
          temp1 = context.substring(start,end);
          temp2 = context.substring(end + 2 );
          Access acc = new Access();
          acc.executeQuery(temp1);
          System.out.println(temp1);
          context = temp2;
        }
        start = 0;
      }
      /*最后一句没有回车的,便可以采用此方法操作最后一句,如果文件最后一行有回车,则无需此方法
      Access acc = new Access();
      acc.executeQuery(temp1);
      System.out.println(temp2);*/
    }
    catch(Exception e){
      System.out.println(e.toString());
    }
  }

  public static void main(String argc[]){
    DBhandle handl = new DBhandle();
    handl.getText();
  }
}

class Access{
  String DBDriver = "sun.jdbc.odbc.JdbcOdbcDriver";
  //change是自己配置的数据源名
  String ConnStr = "jdbcdbc:change";
  Connection conn = null;

  public  Access()
  {
    try
    {
      Class.forName(DBDriver);//加载驱动
    }
    catch(java.lang.ClassNotFoundException e)
    {
      System.err.println(e.getMessage() );
    }
  }

  public  boolean executeQuery(String str1)
  {
    String str;
    try{
      java.sql.PreparedStatement ps;
      //创建连接
      conn = DriverManager.getConnection(ConnStr);
      Statement stmt = conn.createStatement();
      str = "insert into mine(Name) values(?)";
      ps = conn.prepareStatement(str);
      ps.setString(1,str1);
      ps.execute();
      conn.commit();
      ps.close();
      conn.close();
      System.out.println("exec ok!";
    }
    catch(SQLException e)
    {
      System.err.println(e.getMessage());
      return false;
    }
    return true;
  }
}

论坛徽章:
0
4 [报告]
发表于 2003-04-27 21:33 |只看该作者

如何从文本文件中逐条读取数据然后插入到数据库

首先,File ,FileReader是系统定义的数据类型,它包含在哪个包中。
另外,start ,end是作什么用的,
//indexOf允许你判断一个字符串是否存在于一个更长的字符串中以及它所处的位置
while( (end = context.indexOf(13,start) ) >;= 0){
//charAt函数返回在字符串中字符处在给定的位置
if( context.charAt(end + 1) == 10){
temp1 = context.substring(start,end);
temp2 = context.substring(end + 2 );
Access acc = new Access();
acc.executeQuery(temp1);
System.out.println(temp1);
context = temp2;
}
start = 0;
}
这一段是干什么用的,13,end+2 不大明白,谢谢在说一下。

论坛徽章:
0
5 [报告]
发表于 2003-04-28 09:06 |只看该作者

如何从文本文件中逐条读取数据然后插入到数据库

在Java中每一行的回车是用10表示,而每一行的开始是用13表示,而那一段主要是为了判断,你从某行的13开始取,直到取到10为止。

论坛徽章:
0
6 [报告]
发表于 2003-04-28 09:14 |只看该作者

如何从文本文件中逐条读取数据然后插入到数据库

不好意思弄错了点,13表示某行的回车符,10是表示某行换行符

论坛徽章:
0
7 [报告]
发表于 2003-04-28 13:24 |只看该作者

如何从文本文件中逐条读取数据然后插入到数据库

谢谢指教,请问我的第一个问题能否给予回答。
File ,FileReader是系统定义的数据类型,它包含在哪个包中。

论坛徽章:
0
8 [报告]
发表于 2003-04-28 21:08 |只看该作者

如何从文本文件中逐条读取数据然后插入到数据库

听说,现在流行xml啊,为什么不把文本写成xml格式,再用java读取

论坛徽章:
0
9 [报告]
发表于 2003-04-29 09:00 |只看该作者

如何从文本文件中逐条读取数据然后插入到数据库

不要偷懒,到java.sun.com网上去查一下,便知道了

论坛徽章:
0
10 [报告]
发表于 2003-04-29 11:23 |只看该作者

如何从文本文件中逐条读取数据然后插入到数据库

原帖由 "li8848li" 发表:
谢谢指教,请问我的第一个问题能否给予回答。
File ,FileReader是系统定义的数据类型,它包含在哪个包中。


import java.io.*;
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP