首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

急读取文本文件中的内容存到数据库该怎么实现

2012-01-19 
急读取文本文件中的内容存到数据库该如何实现需要实现读取文本文件中的内容存到数据库,文本文件为每个字段

急读取文本文件中的内容存到数据库该如何实现
需要实现读取文本文件中的内容存到数据库,文本文件为每个字段之间用空格格开,
读入到程序后,需要按空格区分,然后将每行内容生成一个sql语句,
文本内容如下面的内容
张三     语文     83
李四         数学       93

把有像这样的文本读到数据库

读文件的功能我实现了,如何   将每一行     如     张三   和语文分开然后插到相应字段

读文件的代码如下:

<%@       page       contentType= "text/html;charset=gb2312 "%>      
       
    <%@       page       import       = "java.util.*,java.io.* "%>      
    <%      
    String       fSrcName= "c:/count.txt ";      
    String       sTemp       =       " ";          
    try      
    {      
    FileReader       fr       =       new       FileReader(fSrcName)       ;      
                                    BufferedReader       br       =       new       BufferedReader(fr)       ;      
                                    String       sLine       =       br.readLine()       ;      
                                    while       (sLine!=null){      
                                                                    sTemp       =       sLine.toString()       ;      
    out.print( " <br> "+sTemp)       ;      
                                                                    sLine       =       br.readLine()       ;      
                                    }      
                                                    fr.close()       ;      
    }catch       (Exception       e){      
    e.printStackTrace(System.err)       ;      
    }      
    %>

[解决办法]
String str=bufferedreader.readLine();
String[] arr=str.split( "\\s ");



for (int i=0;i <arr.length;i++)
{
preparedstatement.setString(i+1,arr[i]);
}

preparedstatement.executeUpdate();

大概是这样。/
[解决办法]
StringTokenizer st = new StringTokenizer(str, " ");
while(st.hasMoreTokens()){
return st.nextToken();
}

[解决办法]
每读一行,调用一下,然后把字符串数组里的东西弄出来扔进数据库就好了.
public static String[] fg(String str) {
return str.split( " ");
}
[解决办法]
你文本每行一般都有格式吧,都读出来转成字符串,在分割,放入数据库。没格式的话就作为一个字符串放进去吧
[解决办法]
String[] arr=sLine.split( "\\s ");
[解决办法]
给你个我做过的数据恢复的部分代码吧
//读取文件中的数据
public String[][] getfilemsg(String filename,int tablecount){

String[][] msg=null;//存储读取文件后的数据
String s=null;//文件的每一行记录
int j=0;//循环行号变量

try{
FileReader infile=new FileReader(filename);
BufferedReader in=new BufferedReader(infile);

//查询当前文件中数据总行数
while ((s=in.readLine())!=null)
{
j++;
}

if (j==0)
{
msg=null;
}
else
{
msg=new String[j][tablecount];

FileReader infile2=new FileReader(filename);
BufferedReader in2=new BufferedReader(infile2);
j=0;

//文件读取
while ((s=in2.readLine())!=null)
{
String Ftr=s;
StringTokenizer gall=new StringTokenizer(Ftr, "\u0007 ");

//通过分割符\u0007进行不同列的截断
for (int i=0;i <tablecount;i++)
{
String gtstr=gall.nextToken();
manage mg=new manage();
gtstr=mg.updatestr(gtstr, "\u0001 ", "\n ");
msg[j][i]=gtstr;
}
j++;
}
}
}catch(Exception e){
System.out.println(e);
}

return msg;
}

[解决办法]
//恢复数据库
public boolean restore(String tablename,String[][] msg,JProgressBar jProgressBar,JLabel jLabel){

boolean f=false;
System.out.println(tablename);
try{
//删除数据库中的原有记录
PreparedStatement del=con.prepareStatement( "delete from "+tablename);
del.execute();

String[][] columntype=getcolumntype(tablename,msg[0].length);
//String sql= "insert into "+tablename;//合成的SQL insert语句

//拼凑SQL语句
String sql= "insert into "+tablename;//合成的SQL insert语句
String sql1= "( ";//SQL insert语句的数据列名部分
String sql2= "( ";//SQL insert语句的value值部分

for(int j=0;j <msg[0].length;j++)
{
sql1=sql1+columntype[j][0]+ ", ";
sql2=sql2+ "?, ";
}

sql1=sql1.substring(0,sql1.length()-1);
sql1=sql1+ ") ";

sql2=sql2.substring(0,sql2.length()-1);
sql2=sql2+ ") ";

sql=sql+ " "+sql1+ " values "+sql2;

System.out.println(sql);
PreparedStatement ins=con.prepareStatement(sql);



for (int i=0;i <msg.length;i++)
{
//循环为PreparedStatement中的参数赋值
for (int k=0;k <msg[0].length;k++)
{
if (msg[i][k]== "\u0003 " || msg[i][k].equals( "\u0003 "))
{
ins.setString(k+1,null);
}
else
{
ins.setString(k+1,msg[i][k]);
}
}

int tt=i*100/msg.length;
jProgressBar.setValue(tt);
jLabel.setText( "已经整合 "+i+ "条数据 ");

ins.addBatch();
}

jLabel.setText( "正在批量提交表 "+tablename);
ins.executeBatch();
jProgressBar.setValue(100);
jLabel.setText( "已完成恢复 ");
f=true;

}catch(Exception e){
System.out.println(e);
}

return f;
}

[解决办法]
要考虑数据库是否放得下,
[解决办法]
readline方法好想不行
我绝的最好就是byte【】 b;
b.getbyte()
string s=new String(b);
Array arr=b.split( " ");
把文本里的都存放到数组里面去
[解决办法]
文件流读一行,再用String的split方法分割,就可以了
[解决办法]
分割也可用StringTokenier类做

热点排行