• ベストアンサー

データベースからの値の取得

create table test (id char(30) not null, pass int not null, primary key (id)); で、作ったデータベースに値を入れ、そこから値を取得して、JSPの方でString型やint型の変数に入れて使いたいのですが、どのようにすればいいのでしょう? JSP側の指定の仕方がわかりません。 String id = ? ; int pass = ? ; ?の所に何を入れれば取得できるのでしょう? または、他に何か書かないとだめなのでしょうか? 省略していますがJSPはデータベースを使用して動いていますので、基本的な動きは問題ないと思います。 MySQLServer4.1を使用しています。 ご存知の方、よろしくお願いします。

  • Java
  • 回答数2
  • ありがとう数6

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

  • ベストアンサー
  • fortranxp
  • ベストアンサー率26% (181/684)
回答No.2

過去に何度か回答してますが <%@ page contentType="text/html;charset=Shift_JIS" %> <%@ page import="java.sql.*" %> <% try { // ドライバクラスをロード // Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); // ODBCの場合 Class.forName("org.gjt.mm.mysql.Driver"); // MySQLの場合 // データベースへ接続 // Connection con = // DriverManager.getConnection("jdbc:odbc:helloworld"); // ODBCの場合 // MySQLの場合 String url = "jdbc:mysql://localhost:3306/mysql?useUnicode=true&characterEncoding=SJIS"; Connection con = DriverManager.getConnection(url,"ID","pass"); // ステートメントオブジェクトを生成 Statement stmt = con.createStatement(); String sql = "SELECT * FROM test"; // クエリーを実行して結果セットを取得 ResultSet rs = stmt.executeQuery(sql); // 検索された行数分ループ while(rs.next()){ // NOを取得 String id = rs.getString("id"); // 言語を取得 int pass = rs.getInt("pass"); // メッセージを取得 // String msg = rs.getString("MESSAGE"); // 表示 %> <%= id + " " + pass %><br> <% } // データベースから切断 stmt.close(); con.close(); } catch (Exception e) { e.printStackTrace(); } %>

参考URL:
http://www.hellohiro.com/jspdb.htm
bell_xxx
質問者

お礼

無事出来ました。 参考ソースまで載せていただき助かりました。 ありがとうございました。

その他の回答 (1)

回答No.1

JSPでデータベースにアクセスするならば簡単なやり方はデータソースを使用することです。 アプリケーションサーバーはTomcatでしょうか? もしTomcatならば以下のサイトが参考になると思われます。

参考URL:
http://www.hellohiro.com/jspdb.htm

関連するQ&A

  • データベースの考え方で。

    データベースの考え方、で教えてください。 路線検索と、路線にひもづく駅名の時刻表を表示させる、データベースを作りたいと思っているのですが、 その場合、考え方としては、以下のような感じになるのでしょうか? 路線名のtbl sql文: create table transit ( id integer not null, name varchar(20) not null ); 路線名tblにひもづく、駅名tbl sql文: create table station ( id integer not null primary key, transit_id integer not null, name varchar(20) not null ); 駅名tblにひもづく、時刻表tbl sql文: create table timetable ( id integer not null primary key, station_id integer not null, hour integer not null, minute integer not null ); 表示パターンとしては、 ================================= ○○線: XX駅 6:10 20 7:30 55 . . . . . . 22:15 36 ================================== のような感じです。 よろしくお願いします。

  • varchar型を主キーに…

    現在サーブレット/JSPを利用してDBにユーザアカウントを登録、削除、更新、一覧をできるようするシステムを作成しています。 テーブルを create table loginuser ( userId char(16) not null default '', passwd char(16) not null default '', name varchar(50) not null default '', accessFlg int(1) not null default '0', primary key(userId)); で作成しました。 IDが数字の時はDBに登録ができるのですがIDに文字を入力するとDBに登録されません。 主キーをvarchar型で使用するのは不可能なのでしょうか? ご返答をよろしくお願いします。

  • データベース

    [表]社員 と [表]組織 SQLと関係代数で記述して、結果を導出表として作成したいのですが・・・ 「社員」....................................................│..............「組織」 [社員ID]...[名前]....[年収]...[課ID]............│........[課ID].....[課名].....[課長] [1001].....[浅野]....[800]....[D].............. │..........[D].........[設計].....[1001] [1002].....[坂口]....[600]....[D]...............│..........[S].........[営業]......[1003] [1003].....[山口]....[800]....[S]...............│..........[P].........[社長室]...[NULL] [1004].....[森]........[900]....[S] [1005].....[田中]....[700]....[S] [1006].....[山田]....[600]....[NULL] 「表」社員を定義する。 CREATE TABLE 社員 ( 社員ID CHAR(4)    NOT NULL , 名前   NCHAR VARYING(20) , 年収  INTEGER , 課ID CHAR(1) , PRIMARY KEY (社員ID) , FOREIGN KEY (課ID) PEFERENCES 組織) 表「組織」を定義する CREATE TABLE 組織 ( 課ID CHAR (1) NOT NULL , 課名  NCHAR (10) , 課長  CHAR (4) , PRIMARY KEY (課 ID) , FOREIGN KEY (課長)  REFERENCES 社員) 1)表「社員」から年収800万未満の社員のすべての情報が知りたい 2)表「社員」と表「組織」から課名が設計である社員の社員IDと名前、課名を知りたい このように「データベース」という本に問題があるんですがわかります方、教えていただけませんでしょうか。 表など見にくいかとは思いますが、宜しくお願い致します。

  • データベースからゼロが持って来れない

    Java初心者です。(SQLも初心者ですが…) Javaからデータベースの値をResultSetクラスのgetStringメソッドで 持って来ようと思ったのですが、持ってこれなかった。 調べたところ、値が0の項目だったのですが(これはidがゼロということで正しい) getStringで持ってきた値を見たところ、空白でした。 (空白なのかnullなのかはよく分かりません) 環境: OS:Windows7 DB:MySQL 5.1.57-community Community Server (GPL) 開発環境:Eclipse3.7 JDBCドライバ:mysql-connector-java-5.1.17-bin.jar SQL文: create table entry(id char(3),provider char(50),url char(255),blogid char(20),account char(20),password char(20)); ※blogidのところに0が入ります。 insert into entry values ('002','goo','http://blog.goo.ne.jp/xmlrpc.php','0','実際のアカウントIDが入る','実際のパスワードが入る'); Java: Connection users = SQL.getConnection(); Statement state = users.createStatement(); ResultSet result = state.executeQuery("select * from entry"); String id = result.getString("id"); String provider = result.getString("provider"); String url = result.getString("url"); String blogid = result.getString("blogid"); String account = result.getString("account"); String password = result.getString("password"); ※System.out.printlnで確認すると、何も入ってない。 そこで質問ですが、 1.値が0だけ持って来れない(0以外の数値なら持ってこれた)原因は何でしょうか? 2.また、対処方法としては何が考えられるのでしょうか? すみませんが、よろしくお願いします。

  • identityの値の変更/自動更新について

    MySQLからWindowAzureに移行しています。 1.identityが設定されている値の変更 auto_incrementが使えないようなので、identityを使用して下記のテーブルを作成しました。 ですが、identityだと更新ができないので困っています。 CREATE TABLE test ( id int NOT NULL identity, text nvarchar(255) NOT NULL, PRIMARY KEY (id), ); データの追加に関しては、IDENTITY_INSERTをONにすることでできますが、更新時はどうすればよいでしょうか? データの追加の場合は、使用の際上記のように、毎回ONにする必要がありますか?(DB接続時にONにしてしまえばよい/テーブル作成時に記述で可能ではない?) 複数個所から更新をするので、すべての箇所に記述するのは可能な限りしたくありません。 2.データの自動更新 テーブルを更新した際に、データを自動で更新したいのですが、mysqlでは on update で可能ですが、 SQLAzureでは、下記のSQLをどのように記述すればよいでしょうか? create table time( id int not null, time1 datetime NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP, PRIMARY KEY(id) ); よろしくお願いします。

  • 2つのテーブルからデータ取得

    いつもお世話になっております。 以下のようなテーブルがあります。 ---------- CREATE TABLE IF NOT EXISTS `students` ( `id` int(11) NOT NULL AUTO_INCREMENT, `student_number` bigint(20) DEFAULT NULL, `name` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`) ) ---------- CREATE TABLE IF NOT EXISTS `student_upload` ( `student_number` bigint(20) NOT NULL, `upload_id` int(11) NOT NULL ) ---------- データは以下のように登録されています。 students ---------- id|student_number|name 1 |11111     |いちろう 2 |22222     |じろう 3 |33333     |さぶろう student_upload ---------- student_number|upload_id 11111     |1 11111     |2 22222     |1 22222     |2 ---------- student_upload.upload_id=1 のデータを取得したいので 下記のようなSQL文を発行しているのですが、student_upload.upload_id=2 の データも取得されてしまいます。 select * from students s, student_upload up where up.upload_id=1 and up.student_number=s.student_number よろしくご教示お願いいたします。 <環境>  PHP:5.3.5  MySQL:5.0.7

    • ベストアンサー
    • MySQL
  • データベース:二つのテーブルの繋ぎ方

    私(あなた)が検査担当者だとします。 そして、測定担当者から CREATE TABLE measurement ( lot VARCHAR(10) NOT NULL, test_id INTEGER NOT NULL, data NUMERIC(17,7), PRIMARY KEY(lot, test_id) ); という、あるロットでのテスト番号に対する測定値データが送られてきたとします。 そして、設計担当者から CREATE TABLE spec ( test_name VARCHAR(10) NOT NULL, upper_limit NUMERIC(17,7), lower_limit NUMERIC(17,7), PRIMARY KEY(test_name) ); という、テスト項目名に対する上限・下限の仕様データが送られてきたとします。 ここで、テスト番号とテスト項目名は同じ数だけあって、お互いが一致するように同じ順番で並んでいるとします。 この二つのテーブルを使って、測定値が範囲内か範囲外かを調べるのが目的です。 この場合、どうやって二つのテーブルを繋ぐのが一般的ですか? 自分の考えだと、一旦、specテーブルにtest_idを加えて CREATE TABLE spec ( test_id INTEGER NOT NULL, test_name VARCHAR(10) NOT NULL, upper_limit NUMERIC(17,7), lower_limit NUMERIC(17,7), PRIMARY KEY(test_id, test_name) ); とするのですが、第二(第三?)正規化に基づいて CREATE TABLE spec ( test_id INTEGER NOT NULL, upper_limit NUMERIC(17,7), lower_limit NUMERIC(17,7), PRIMARY KEY(test_id) ); と CREATE TABLE test ( test_id INTEGER NOT NULL, test_name VARCHAR(10), PRIMARY KEY(test_id) ); の二つに分けるのかな、と思っています。 正規化の観点から言うと、きっとこれが正しいのかなと思っています。 でも、元々、specテーブルにはテスト項目名が入っていたのでテスト項目名と上限・下限が一目で分かっていたのに、このように分けると、いちいちspecテーブルでテスト番号を確認してから、testテーブルでそのテスト番号に該当するテスト項目名を見つけなくてはならなくなってしまいます。クエリーでの検索もJOINをしなければならなくなって遅くなりませんか? 敢えて正規化しないでおく、なんて手段もありますか? こんな場合、皆さんならどうしますか? 「こうするように決められている」なのか、 「ああもできるし、こうもできるんですが、どっちでもいいですよ」なのか、 温度差みたいなものもできれば知りたいです。

  • MySQLの外部キーの設定について

    はじめまして。 質問があります。 MySQLを使用しているのですが、以下を見てください。 ---------------------------------------------------------------- mysql> create table vendors -> ( -> vend_id char(10) NOT NULL, -> vend_name char(50) NOT NULL, -> vend_zip char(10), -> vend_state char(10), -> vend_city char(50), -> vend_address char(50), -> primary key(vend_id) -> ) TYPE=MyISAM; Query OK, 0 rows affected (0.38 sec) mysql> create table products -> ( -> prod_id char(10) NOT NULL, -> vend_id char(10) NOT NULL, -> prod_name char(255) NOT NULL, -> prod_price decimal(8,0) NOT NULL, -> prod_desc blob, -> primary key(prod_id), -> foreign key(vend_id) references vendors(vend_id) -> ) TYPE=MyISAM; Query OK, 0 rows affected (0.05 sec) ---------------------------------------------------------------- 外部キーを設定したつもりなのですが、desc productsを実行すると キーフィールドに「pri」と表示されているので、主キーが 設定されていることが確認できるのですが、外部キーが設定されて いることは確認できません。外部キーは設定されているのでしょうか? もし設定されていないのなら、どのようにすればよいのでしょうか? また、外部キーが設定されていることを確認するにはどうすれば よいでしょうか?ご教授お願いします。

    • ベストアンサー
    • MySQL
  • 空きのID番号を取得する方法

    いつもお世話になっております。 create table AAA( ID int(6) primary key not null auto_increment, DATA varchar(30), )engine=MyISAM; というテーブルにおいて、 insertをすると、IDが1から順に割り振られていきますが、 途中のレコードをdeleteすると、そこが空きのID番号となってしまい、 次にinsertすると、空き番号が残ってしまいます。 やりたいことは、その空き番号を有効活用するために、 auto_incrementを使用せずに、空き番号を適当に取得して、 insertをしたいのです。 何か効率的な良い方法をご存知の方がいらっしゃいましたら、 ご教授いただけると幸いです。 よろしくお願いいたします。

    • ベストアンサー
    • MySQL
  • MySQLでCREATE TABLE

    MySQLでCREATE TABLEをする際に、 プライマリキーを設定する場合は、 CREATE TABLE( AAA CHAR(5) NOT NULL, BBB CHAR(5) NOT NULL, CCC VARCHAR(10) NOT NULL, PRIMARY KEY(AAA) ); のようにすると思うのですが、「BBB」を外部キーにしたい場合は、どうしたらいいのでしょうか?

専門家に質問してみよう