計算機學習積累

          ----轉載有理,轉載是想研究,想研究才會看,看了才會有感想,轉載后我有時會寫一些自己的感受
          數據加載中……

          通過文本文檔實現信息的批量導入(轉)

          2005-08-05? ?來源:CSDN ?作者:CMTobby
          最近參與了一個網上直報項目的維護工作,該網上直報應用程序有一個功能就是通過導入文本文檔的方式向后臺數據庫中批量導入直報用戶,包括用戶各項信息如單位名稱、企業資質等級等等。其核心之處就是如何獲取所上載文本文檔中的內容,現將該部分程序簡單介紹如下:

          ??????? 首先是后臺的javabean程序如下所示:

          package ?Util;

          import ?javax.servlet. *
          ;
          import
          ?javax.servlet.http.HttpServletRequest;
          import
          ?java.util.LinkedList;
          import ?java.io. *
          ;

          public ? class
          ?ReadRequest{
          ?
          public
          ?LinkedList?getRequest(HttpServletRequest?request){
          ??LinkedList?output
          = new
          ?LinkedList();
          ??
          try
          {
          ??????ServletInputStream?in
          =
          request.getInputStream();
          ??????
          int ?len =
          request.getContentLength();
          ??????System.out.println?(len);
          ??????
          byte ?[]b = new ? byte
          [len];
          ??????in.read(b,
          0
          ,len);
          ??????String?str
          = new
          ?String(b);
          ??????System.out.println?(str);
          ??????BufferedReader?con
          = new ?BufferedReader( new
          ?StringReader(str));
          ??????String?c
          = ""
          ;
          ??????
          while ((c = con.readLine()) != null
          ){
          ???????output.add(c);
          ??????????????????????????????????}
          ?????????}
          ?????
          catch
          (Exception?e){e.printStackTrace();}
          ?????
          return
          ?output;
          ????????????????????????????????????????????????????}
          ????????????????}

          然后是寫相應的jsp測試頁面,此頁面沒有經過美工處理,僅為測試之用:)。

          ??????? index.jsp

          <% @?page?contentType = " text/html;?charset=gb2312 " ?language = " java " ? import = " java.sql.* " ?errorPage = "" ? %>
          <! DOCTYPE?HTML?PUBLIC? " -//W3C//DTD?HTML?4.01?Transitional//EN " ? " http://www.w3.org/TR/html4/loose.dtd " >
          < jsp:useBean?id = " pn " ?scope = " page " ? class = " Util.ReadRequest " />
          <%--< jsp:useBean?id = " pn " ?scope = " request " ? class = " Util.GetFile " />--%>
          <% @?page? import = " java.util.* " %>
          < html >
          < head >
          < meta?http - equiv = " Content-Type " ?content = " text/html;?charset=gb2312 " >
          < title > 測試 </ title >
          </ head >

          < body >
          < form?name = " form1 " ?action = " index.jsp " ?method = " post " ?enctype = " multipart/form-data " >
          ?
          < input?name = " sdf " ?type = " file " >< input?name = " aa " ?type = " submit " ?value = " 提交 " >
          ?
          ?
          <% ?
          LinkedList?output
          = new
          ?LinkedList();
          output
          =
          pn.getRequest(request);
          // output=pn.readHttpData(request);

          System.out.println(output.size());
          for ( int ?i = 0 ;i < output.size();i ++
          ){
          ????out.println(output.get(i)
          + " <br> "
          );
          ???????????????????????????????????????????????????}
          ?
          %>

          </ form >
          </ body >
          </ html >

          這樣就會輸出文檔中的內容來了,當然還有一些其他的內容,可根據實際需要對內容進行處理。需要注意的是,在該網上直報程序中,文檔的格式是有要求的,每行為一個公司的基本信息,各個屬性之間用“,”隔開(也可以是其他的符號如“@”),并且各個屬性出現的順序也是固定的(如必須第一項是法人代碼,第二項是公司名稱)。得到了文檔中的內容后,就可以用一個循環批量的插入用戶信息了。比如說,我上載的文本文檔內容如下所示:

          ??????? 300000000,武漢,420101,230,A304,A211,4700
          ??????? 300000001,武漢,420101,230,A304,A211,4700
          ??????? 300000002,武漢,420101,230,A304,A211,4700
          ??????? 300000003,武漢,420101,230,A304,A211,4700
          首先對output進行處理,把前面的http頭內容如:Content-Disposition: form-data; name="sdf"; filename="C:\Documents and Settings\yy\桌面\test_jz.txt"以及尾remove掉,現在的output就只有文檔中的內容了。然后就開始插入數據庫(只給出代碼片斷):

          //以下代碼僅適合本人的例子,具體情況具體而定

          for ( int ?i = 0 ;i < output.size();i ++ ){
          ?
          if ?(output.get(i)? == ? null ? || ?(?(String)?output.get(i)).equals( ""
          ))?{
          ??????????
          continue ;? // 空行則自動換行????????}

          ?String?s? = ?(String)?output.get(i);? // 取得一行?String[]?ss?=?s.split(",");
          ?String?sql = " insert?into?xt_user(f001,f002,f003,f004,f005,f006)?values(?,?,?,?,?,?) " ;
          ?PreparedStatement?ps
          =
          con.prepareStatement(sql);
          ?ps.setString(
          1 ,ss[ 0
          ]);
          ?ps.setString(
          2 ,ss[ 1
          ]);
          ?ps.setString(
          3 ,ss[ 2
          ]);
          ?ps.setString(
          4 ,ss[ 3
          ]);
          ?ps.setString(
          5 ,ss[ 4
          ]);
          ?ps.setString(
          6 ,ss[ 5
          ]);
          ?ps.executeUpdate();
          ?????????????????????????????}

          posted on 2006-07-18 11:01 freebird 閱讀(314) 評論(0)  編輯  收藏 所屬分類: java

          主站蜘蛛池模板: 双城市| 延寿县| 安义县| 巴林右旗| 聊城市| 馆陶县| 康平县| 微博| 江都市| 雷州市| 广灵县| 江津市| 会宁县| 长岛县| 广安市| 改则县| 乌拉特后旗| 武宣县| 麟游县| 锦屏县| 丹巴县| 五莲县| 海宁市| 磐安县| 黄浦区| 巴彦淖尔市| 略阳县| 石狮市| 泰兴市| 万山特区| 兰考县| 海安县| 昭通市| 双峰县| 黑山县| 邳州市| 府谷县| 河东区| 汾阳市| 海林市| 灵宝市|