- ベストアンサー
JSP/サーブレットでデータをテーブルに格納する方法
- Java初心者の方が、JSP/サーブレットを使ってデータをテーブルに格納する方法について教えてください。
- read.jsp内のテキストエリアにリーダーで取り込んだデータを、read.javaを通じてテーブルに格納したいです。
- 質問者はデータが文字列として取り込まれるため、取り込んだデータを分解してからテーブルに格納したいと考えています。具体的なソースコードなどを教えていただけますか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
> 自作のデータベース MySQLかなにか? データベースの仕組み自体を作ったわけじゃないわよね。 MySQLと仮定して つまり、あなたが今困っているのは Javaの変数に格納されているデータを データベースのテーブルに格納する方法 ってことかしらね。 だとすると ググレ て言うわ。 確かに初心者には敷居高いところだけど そのくらいはまずぐぐりなさいって話になっちゃうわ。 「hsql」と「Java」という単語でぐぐるの。 サンプルがいくらでも手に入るわよ。 もうちょっと検索結果を絞り込みたい場合は 「hsql」と「JDBC」でぐぐるといいわ。 「JDBC」って言うのはJavaが提供する データベースとのやり取りをする仕組みなの。 ちなみに hsqlは正式名称HypersonicSQLというので hsqlだけじゃなく 「HypersonicSQL」とか「HSQLDB」とかでも検索すると良いわね。 書いてあることは結構難しいかもしれないから そのときはまた質問してちょうだいな。
その他の回答 (3)
- askaaska
- ベストアンサー率35% (1455/4149)
・・・んー ひとつ確認。 「テーブル」 これが指すものは何かしら?
- mintia007
- ベストアンサー率59% (16/27)
ん? どっかで同じような質問がありましたね。 ↓ここだ http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1050625230 上記では上手くいかなかったのでしょうか? (BA時には上手く行ったと書いてありますが)
補足
ご回答ありがとうございます。 仰るとおり、送ったデータ(keyword)をtimeとbarcodeに分け、Javaで表示。まではできました。 しかし、その後、バラバラにしたデータ(つまり、timeとbarcode)をテーブルに格納することが出来ませんでした。 そのため今回の質問ではバラバラにしたデータをテーブルに格納する方法を求めています。 同じような質問だと思われますが、ご理解いただけたらと思います。
- askaaska
- ベストアンサー率35% (1455/4149)
入力されるデータに一定の規則がないとダメよ。 一定の規則があるのなら Stringのsplitで分割するなり MessageFormatでparseするなり Stringのsubstringで切断するなり すればいいの。 今回のデータなら 1行ごと処理するようにして 半角スペースでsplitして 最初の2つをSimpleDateFormatでparseして日時に変換。 3つ目がbarcodeかしら。 <Memory> 2010/11/28 21:44:17.000 FM36J07,009059,0 <End> が必ず読み取っちゃうというけど この読み取っちゃうものにはどんな規則性があるのかしら。 常に1行目2行目最終行ならそれをスキップするようにするとか <で開始する行はスキップするとか splitで取得した3つ目のデータにカンマが入っていたらスキップするとか 考え方はいろいろあると思うわ。
補足
ご回答ありがとうございます。 Scannerを使い、バラバラにすることまではできました。 しかし、このままではFlowテーブルに格納できなくて困っているという状況です・・・ 以下、そのソースコードです。 (Read.java) ・・・・・・・・・・ public class Read extends HttpServlet { private static final long serialVersionUID = 1L; public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("Shift_JIS"); String keyword = request.getParameter("keyword"); Scanner sc = new Scanner( keyword ).useDelimiter("[\\s]+"); List<String> date = new ArrayList<String>(); List<String> code = new ArrayList<String>(); sc.next(); sc.next(); sc.next(); sc.next(); while( sc.hasNext() ){ String s = sc.next(); if( s.toUpperCase().equals("<END>") ){ break; } s += " " + sc.next(); date.add( s ); code.add( sc.next() ); } response.setContentType("text/html; charset=Shift_JIS"); PrintWriter pw = response.getWriter(); pw.print("<HTML>"); pw.print("<BODY>"); pw.print("日時<BR>"); for( String s: date ){ pw.print( s + "<BR>" ); } pw.print("<BR>コード<BR>"); for( String s: code ){ pw.print( s + "<BR>" ); } pw.print("</BODY>"); pw.print("</HTML>"); } } このままでは、表示のためにKeywordをdateとbarcodeに分けている状況に過ぎないのかなと思います。 このdateとbarcodeをFlowテーブルに格納できれば一番です。 格納の仕方をご教授いただければと思います。
補足
ご回答ありがとうございます。 質問内の ///////////// Flow(テーブル) id int barcode int date varchar //////////// の部分ですが、自分で作成したデータベースのことです。 create tableで作りました。 このテーブルに読み取りデータを格納したいと思っています。 (ご質問の意図に合っていなかったらすいません・・・)