首先数据库的备份没有问题,
在进行数据库还原,即数据的导入时出现了异常
..........................
  ...........................
OutputStreamWriter writer = new OutputStreamWriter(out, "utf8");
writer.write(outStr);
// 注:这里如果用缓冲方式写入文件的话,会导致中文乱码,用flush()方法则可以避免
writer.flush();
// 别忘记关闭输入输出流out.close();
br.close();
writer.close();
这些流的操作就是为了数据库的还原就是.sql文件的导入(这里用的mysql -u -p -h < ...sql进行的还原)
意思就是数据导入数据库后查询以还原的表的内容
流关闭后有一个对还原后的表的修改操作
可是每次都不能修改成功,
后来发现是查询对应id的记录是时返回的值是null,也就是这条记录不存在
怎样才能解决,或判断还原已经完成,或进行数据库的刷新
我怀疑,1,可能是 java代码执行过快,而数据的导入在数据库执行中过慢,
  2,内存中的数据没有被执行,
  3,数据库没有刷新,求大家帮忙解释或解决一下

解决方案 »

  1.   

    而且按照java代码的执行顺序不应该出现这种情况啊
      

  2.   

    原来在DELPHI中也是,比如执行压缩WINRAR,压缩1个文件夹,DELPHI继续向下执行,没有等待WINRAR执行完毕,
    后来用1个阻塞程序(DELPHI中的),等待WINRAR执行完毕,再执行下面的语句。估计与你是同样的问题。
      

  3.   

    是DELPHI代码 ,
    procedure ys(dd:string);
    var ee:integer;sInfo : TStartupInfo;
    pInfo : TProcessInformation;
    exitCode : Cardinal;
    begin
    ee:=1;
    if pos('mcafee',dd)>0 then ee:=0;
    FillChar(sInfo,sizeof(sInfo),#0);
    sInfo.cb := SizeOf(sInfo);
    sInfo.dwFlags := STARTF_USESHOWWINDOW;
    sInfo.wShowWindow:=ee;if not CreateProcess(nil,pchar(dd),nil,nil,false,CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS, nil, nil, sInfo, pInfo) then
    MessageBox(Application.handle,'指定程序启动失败!','错误',MB_OK or MB_ICONSTOP)
    else
    begin
    WaitForSingleObject(pInfo.hProcess,INFINITE);
    GetExitCodeProcess(pInfo.hProcess,exitCode);
    end;
    end;你自己看看在你的语言中是否有相近的程序
      

  4.   

    笨方法,设置表的某个字段的值为1(可以在备份前替换此值),在JAVA中循环,条件为此字段的值为0,循环取值,直到某个字段的值为1时,才退出循环
      

  5.   

    恩,我就用的这个方法看大哥星星挺多,能不能对java 进行网络数据抓取指点一下啊!!
      

  6.   

    呵呵,不谋而合,没有学过JAVA,不能帮你的,你到JAVA版去问问吧