データベース、jsp、servlet、JavaBeansについて勉強した者の疑問

このQ&Aのポイント
  • データベースの概念やSQLの使い方について理解ができていない
  • データベースのデータはテーブルに格納されており、SQLを使って操作するが、元のデータは変更できない
  • データベースのデータは宇宙のように星のように散らばっており、書き換えたデータは一時的なものであり、元のデータを書き換える方法がわからない
回答を見る
  • ベストアンサー

データベース、jsp、servlet、JavaBeans・・

データベース、jsp、servlet、JavaBeans・・ 授業で勉強しはじめた者です。 そもそも、データベースの概念がわかりません。データベースには沢山のデーターがあって、 それがテーブルになっている。それをsqlを使って書き換えることができる。 でも、元のデータは書き換えることはできない。 デスクトップに表示されるのは、命令にたいする処理であって元はそのままになっている。 と言うことは、例えばデーターベースという宇宙があるとして、その中にデータが星のように散らばっているのでしょうか? そして、元のデータを書き換えるにはどうすればいいのでしょうか? CELECT文などで書き換えられたデータはその時だけ? よくわかりません。自分の勉強不足だと承知の上どなたかご回答よろしくお願いいたします。

  • mck37
  • お礼率97% (469/482)
  • Java
  • 回答数3
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
  • g_liar
  • ベストアンサー率52% (382/728)
回答No.3

データベースを概念的に言うと・・・ 図書館を想像してください。 図書館の建物が「データベース」です。 図書館内にはたくさんの本棚がありますよね。その本棚が「テーブル」です。 本棚に入っている1冊1冊の本が「データ」です。 本棚の本を取り出して読むことが「SELECT」です。 本棚に新しい本を追加することが「INSERT」です。 本棚の本を取り替えることが「UPDATE」です。 本棚から本を抜き取ることが「DELETE」です。 イメージがわくでしょうか?

mck37
質問者

お礼

g_liarさん、ありがとうございます。 専門的な言葉だったらどうしよう・・と思っていましたのでg_liarさんの例えは とてもイメージしやすかったです。特にsqlを用いて説明してくれている所が 関連付けやすく、助かりました。 小さいですが一歩前に進めた気がします。 感謝!(^^)

その他の回答 (2)

  • Yupa3
  • ベストアンサー率37% (190/513)
回答No.2

元のデータ=データベース上のデータということなら、SQLの「Update」文で更新できます。 勉強中ということであれば、データベースのSQLのところを参照ください。 尚、上記の説明でいいなら、「でも、元のデータは書き換えることはできない。」という認識は誤りです。

mck37
質問者

お礼

Yupa3さん、ありがとうございます。 気づいていない誤りに気づくことができました。 そう考えれば見えてくることがありそうです。 スタート時点で間違った認識をしていたので、余計混乱していました。 こんなレベルな自分でも気づけることがあるんですね。 ありがとうございました。

  • askaaska
  • ベストアンサー率35% (1455/4149)
回答No.1

質問はJavaじゃなくてSQLの方かしら? いまいち質問のシチュエーションが分からなくて どう答えていいのか分からないんだけど。

mck37
質問者

補足

なんと伝えればいいのか・・自分自身質問するレベルじゃないのに、本当ご迷惑をおかけします。 今、授業で「JavaBeansとMVC設計」という内容をやっていて、jspファイルとjavaファイルを使って データを取り出すことをしています。そこで、 取り出される側であるデータベースそものもがよく理解できないのです。こんな感じなのですが・・ せっかくお返事を頂いたのに肝心な質問内容が不十分で申し訳ありません

関連するQ&A

  • JSP-Servlet-JavaBeansを使った場合のデータベースアクセスについて

    JSP-Servlet-JavaBeansで開発するときに、 業務ロジックはModelであるJavaBeansの中で作成すると 思います。 様々なサンプルを見ると、そのJavaBeansの中で データベースへのコネクションを作成し、SQL文を実行して 値を取得しています。(DBへの接続文字列や接続ユーザ、パスワード等も固定になっています) しかし、DBへの接続文字列(特にサーバ名)や 接続ユーザ・パスワードなどは、普通Servlet初期パラメータから取得して設定するべきだと思います。 Servletだけで開発しているときは、 DBManagerのようなクラスを作成し、コンストラクタの引数に接続文字列等を渡していたのですが、 JavaBeansの場合はどうなるのでしょう? (同じように引数付きのコンストラクタを作成するのでしょうか??) また、今まではServletのini()で使ってコネクションをプール実現していたのですが、JSP-Servlet-JavaBeansを使うと、どのように処理を分ければよいのでしょうか? 長文で大変申し訳ありませんが、ぜひ良きアドバイスを お願いします。

    • ベストアンサー
    • Java
  • JSPでデータベース作成

    JSPでMySQLを使って、自動でデータベースを作成したいのですが可能でしょうか? MySQLであらかじめデータベースとテーブルを作成しておいて、そこのデータを検索したり、追加したりは出来るのですが、JSPでデータベースを1から作成することが出来ません。 JSPでデータベース名やテーブル名を入力させてから、そこにデータを追加したいと考えています。 何かいい方法ご存知の方、教えてください。よろしくお願いします。

    • ベストアンサー
    • Java
  • jsp 動的テーブルについて

    現在jspでServletのO/R マッパーを使用しSQL文の結果をMapListでセットしそれをjspへリクエストを 送りjspで全件表として表示させようとしています。 件数によってテーブルの行数も増え また行数がある一定の行数まで増えたら~ っといった処理を作成するにはどのようにテーブルを作成したらいいのでしょうか?

  • ブラウザ上でデータベースのテーブル表示について

    こんにちは。研修の問題についてなのですが・・・ postgresql+jsp+servlet でお聞きしたい事があります。 環境は(ちょっとわからないので)最新のものでお願いします。 まず、 servletからDBに接続、SQL文でテーブル内容全てを取得。 SQL文を実行してResultSetをこのままrequestにいれてjspへ送る。 jspでrequestを取得、next()、getIntなどでResultSetの中身を取得。 <%= %>でブラウザに表示する。 という形なのですが、テーブルの中身の最後の行 しか表示されないのです。 テーブル内は他にもいくらか行があります。 これはなぜなのでしょうか? ResultSetをそのまま送るとこの結果になるのでしょうか? servletでテーブル内を全て取得してから[(rs.next())、get~を使って。] jspに送ったほうがいいのでしょうか? またその場合は取得した値をそのままrequestに入れて送るものなのでしょうか? 聞いてばかりでお恥ずかしいですが ちょっと行きずまってます。宜しくお願いいたします。

    • ベストアンサー
    • Java
  • JSP+Servletでのページングの常識

    JSP+Servletでのページングの実装方法について伺いたいと思い、 質問いたしました。 現在JSP+ServletでWebページを製作しておりますが、 ページングを行うデータの取得方法で悩んでおります。 データをDBから取得する際は、下記1と2のどちらが標準的な実装方法なのでしょうか??? 条件としては、レコード件数2000件のテーブルからデータを取得し、1ページ10件ずつ表示します。 また、APサーバとDBサーバの通信がボトルネックになることはない場合でお願いします 1.全件を最初に取得しておいて、ページ切り替えの際は、DB接続なしで表示する 2.ページに表示する件数分のみDBから取得し、ページ切り替えの際は、毎回必要な件数分取得する 1の方法ですと、常に全件をキャッシュしていることになり、パフォーマンスが心配です。 2の方法ですと、ページ制御が煩雑になりそうな気がします。

    • ベストアンサー
    • Java
  • JSPでデータ一覧表示

    JSP+Bean+Servletで作っています。 BeanでDB接続、データを取得して、 それをJSPで一覧表示として表示させたいのですが、 どのタグを使えばいいのでしょうか。 また、その場合、タグは、Servletとか Beanでかく必要がありますか。 たとえば、今、DBに30個データがある場合、 JSPでそれをTABLEタグを使って 一覧表示させますよね。 でもJSP側では、<TR><TD></TD></TR>の データをいくつセットできるか、っていう 数がきまってますよね。てことは、 ServletとかBeanでHTMLのタグをうって 表示させないといけないんですか??? やりたいことは、BeanとかServletで タグは書かずに、JSPでパラメータだけ 受け取って、その数だけデータを 表示させたいんです。 (JSPだけでタグをかいて、パラメータで わたってきたデータを表示させたい。) そういうことってできますか?? ・・・説明がうまく出来てないかとは思うのですが よろしくお願いします。

    • ベストアンサー
    • Java
  • JSPファイルからデータベースにアクセスできない

    以下のサイトを参考にして、JSPからデータベースにアクセスして ブラウザに表示させようとしています。 http://www.atmarkit.co.jp/fjava/rensai/jsp10/jsp10.html 実行環境は以下です OS: Vine Linux 4.1 PostgreSQL: version 8.2.5 Tomcat: version 5.5.25 Java: Java 2 SDK, standard Edition, version 1.5.0_13 ブラウザからjspファイルにアクセスすると次のエラーがでてきます ーーー エラー文 ーーー HTTPステータス 500 - type 例外レポート メッセージ 説明 The server encountered an internal error () that prevented it from fulfilling this request. 例外 org.apache.jasper.JasperException: Exception in JSP: /dbaccess.jsp:16 13: db.open(); 14: 15: // メンバーを取得 16: ResultSet rs = db.getResultSet("select * from member"); 17: 18: // メンバー一覧表示用のテーブル 19: String tableHTML = "<table border=1>"; Stacktrace: org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:451) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:355) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265) javax.servlet.http.HttpServlet.service(HttpServlet.java:803) 原因 javax.servlet.ServletException: ERROR: relation "member" does not exist (略) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265) javax.servlet.http.HttpServlet.service(HttpServlet.java:803) 原因 org.postgresql.util.PSQLException: ERROR: relation "member" does not exist org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:1548) (略) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265) javax.servlet.http.HttpServlet.service(HttpServlet.java:803) ーーー ここまで ーーー 自分が行った手順なんですが、 1、postgresユーザで'sampledb'というdbを作り、そのなかにmemberという テーブルを作成し、select * from member; を実行したところテーブル はありました。 2、MyDBAccess.javaは参考サイトとほぼ同じです。 コンストラクタの設定のところを以下のようにしました。 ーーーーーーーーーーーー public MyDBAccess() { driver = "org.postgresql.Driver"; url = "jdbc:postgresql://localhost:5432/sampledb; user = "postgres"; password = "********"; } ーーーーーーーーーーーー コンパイルも通ったので TOMCAT_HOME/webapps/####/WEB-INF/classes/atmarkitに クラスファイルを置きました。 3、jspファイルはdbaccess.jspという名前でそのまま使いました。 TOMCAT_HOME/webapps/####/dbaccess.jsp 4、/usr/local/pgsql/data/postgresql.confの #listen_addresses = 'localhost' を listen_addresses = '*' に書き換え、その後に $ pg_ctl reload としました。 5、ブラウザから "http://localhost:8080/####/dbaccess.jsp" にアクセスするとエラーがでました。 例外の部分のエラーはいろいろいじっていると出たり出なかったりですが、 "relation "member" does not exist"というエラーは消えません。 自分でいろいろ調べてみたのですがうまくいかなくて行き詰まってしまいました。 どうか助言や解決策があれば教えてください。 お願いいたします。

  • JSP データベースへの数回の接続

     いつもお世話になっております。  今私は、JSPからデータベース(Access 2003)へデータを追加・検索をしようとしています。  データベースにデータを追加するため、データベースを接続する記述及び追加をする記述を書き、データを追加していきます。  その下の記述にHTMLが入り、HTML文の後に今度はデータベースに検索をかけてデータを取得し、その記述の下に更にHTML文を記述し取り込むといった流れでプログラムを書いております。 ■HTML文 ■データベース追加文 ■HTML文 ■データベース検索文 ■HTML(データベースからの取得データもいれる)  しかし、データベースへは、追加はされているのですが、検索の記述の部分がまったく読まれておらず、ジャンプされており、どうしても検索ができません。  JSPからデータベースへの接続は初めてですので、わからないことも多く、もしかしたらJSPでは数回のデータベースへの接続はできないのかな?と思いながら、最終的にこちらで伺い参りました。  プログラムが長いため、HTML文を除き、データベースの部分だけ下に記述させていただきます。その記述の中でのこの変数はどこからもってきているのかな?と思われる方もいらっしゃるかと思いますが、しっかり値が入っておりますので心配ございません。 <%@ page import="java.sql.ResultSet"%> <%@ page import="java.util.*" %> <%@ page import="javax.servlet.*" %> <%@ page import="java.sql.SQLException" %> <%@ page import="java.sql.Connection" %> <%@ page import="java.sql.*" %> <%@ page import="java.util.Date" %> <%@ page import="java.util.Calendar " %> <% Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection con =null; con = DriverManager.getConnection("jdbc:odbc:QUIZDB"); Statement sql; sql = con.createStatement(); Calendar cal = Calendar.getInstance(); Integer nen=cal.get(Calendar.YEAR); Integer tu=cal.get(Calendar.MONTH)+ 1; Integer hi=cal.get(Calendar.DATE); String userName=(String)session.getAttribute("userName"); Integer userId=(Integer)session.getAttribute("userId"); sql.executeUpdate( "INSERT INTO Seiseki(氏名,ID,ジャンル,正解数,クイズ日付)"+"values('"+userName+"','"+userId+"','"+aa+"','"+seikaiten+"','"+nen+"/"+tu+"/"+hi+"')"); sql.close(); %> <■HTML文がはいります> <% Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection db =null; db = DriverManager.getConnection("jdbc:odbc:QUIZDB"); String sq = "select * from Seiseki where(氏名= '"+userName+"') and (ID = '"+userId+"')"; Statement st; st = db.createStatement(); ResultSet res; res = st.executeQuery(sq); if(res.next()){    String Name=res.getString(1);    String Id=(String)res.getString(2);    Integer id =Integer.parseInt(Id); String jyanru=res.getString(3); String seikai=res.getString(4); int kazu =Integer.parseInt(seikai); String hizu=res.getString(5); } st.close(); %> <■HTML文が入り、変数を入れて表示させます> 以上となります。どんな小さなことでも構いませんので、お手数ですがアドバイス宜しくお願い申し上げます。

    • ベストアンサー
    • Java
  • jspのプログラムについて

    jspファイルで データベースの中のテーブルの中身をCSVファイルに出力するプログラムを教えてください。 delete文で中身を消すプログラムは書けたのですが、これはできません。 conn = null; st=null; conn=DriverManager.getConnection("jdbc:mysql://localhost/データベース名?" + "user=ユーザー名&password=パスワード&useUnicode=true&characterEncoding=utf8"); st=conn.createStatement(); StringBuffer buf = new StringBuffer(); buf.append("delete from where id="+id); st.executeUpdate(buf.toString()); これで削除はできました。 なのでbuf.appendの中身を buf.appendbuf.append("select * from テーブル名 INTO OUTFILE \"data.csv\" fields terminated by ',' "); これに書き換えればできると思ったのですができません。 よろしくお願いします。 エラー内容は org.apache.jasper.JasperException: An exception occurred processing JSP page /CSV.jsp at line 24 21: 22: StringBuffer buf = new StringBuffer(); 23: buf.append("select * from anpisystem INTO OUTFILE \"data.csv\" fields terminated by ',' "); 24: st.executeUpdate(buf.toString()); 25: 26: } 27: Stacktrace: org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:510) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:401) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 原因 javax.servlet.ServletException: java.sql.SQLException: Can not issue SELECT via executeUpdate(). org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:862) org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:791) org.apache.jsp.CSV_jsp._jspService(CSV_jsp.java:94) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 原因 java.sql.SQLException: Can not issue SELECT via executeUpdate(). com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1086) com.mysql.jdbc.SQLError.createSQLException(SQLError.java:989) com.mysql.jdbc.SQLError.createSQLException(SQLError.java:975) com.mysql.jdbc.SQLError.createSQLException(SQLError.java:920) com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1803) com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1764) org.apache.jsp.CSV_jsp._jspService(CSV_jsp.java:76) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260) javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

    • ベストアンサー
    • Java
  • JSPとJAVAを使ってデータ送信をしたいです。

    JSPサーブレットを勉強中です。Javaにデータを送信したいのですが、分からないことがあり、質問させていただきました。 JSPのページのテキストボックス内に以下のデータを取り込みました。(一つのテキストボックス内です。) --------------------------------------- <Memory> 2010/11/11 21:51:06.000 FM36J07,009059,0 2010/11/11 21:49:24.000 11113331 2010/11/11 21:49:27.000 11111115 2010/11/11 21:49:28.000 33333335 2010/11/11 21:49:29.000 33331119 2010/11/11 21:49:30.000 55551113 2010/11/11 21:49:31.000 22224446 2010/11/11 21:49:32.000 22225559 2010/11/11 21:49:33.000 22224446 <End> --------------------------------------- このデータはバーコードリーダーにより商品をスキャンし、テキストボックス内に取り込んだ日時と商品IDだとします。 2010/11/11 21:49:24.000などの部分は取り込んだ日時で、11113331などが商品IDです。 以下に続くデータも同じです。 このように取り込んだデータを「送信」ボタンにより次のページ(JAVA)に送信し、日付と商品IDを別に取り出し、それぞれデータベース上に格納したいです。 格納場所は Flowテーブル ID id int, 商品ID c_id int, 時間 time datetime です。 一つのIDに対し、商品IDと時間を全て取り込みたいのです。 ちなみに商品ID(11113331など)は別テーブル(Departmentテーブル)で格納済みです。 現時点では、 JSPのページで <form action="../servlet/Page.Read"> <textarea name="flow" rows="25" cols="50"></textarea> <input type="submit" value="送信"> のように書き、"flow"をRead.javaのページに送信しようとしてますが、この後、Read.javaのページでどのように受け取り、Flowテーブルに格納すればよいか分からなく、困っています。 バラバラにしてから、Read.javaに送るのか、1つで送って、Read.javaでばらばらにするのか・・ 受け取ったFlowをばらばらにして、データベースに接続して、SQLを発行して、テーブルにデータを格納・・・ どうにせよ、実力不足でバラバラにできないのでお手上げ状態です。 分かりづらい質問で申し訳ないのですが、具体的なソース等、どなたかご教授よろしくお願いします。

    • ベストアンサー
    • Java

専門家に質問してみよう