こんばんわ。
教えて頂きたいのですが、以下のjspを記述しましたが番号・名前・電話番号の項目表示のみで肝心のテーブル内容が表示されません。
何が原因かわからず困っています。
教えて下さい!お願い致します。
<%@page contentType="text/html; charset=Shift_JIS" pageEncoding="Shift_JIS"%>
<%@page import="java.sql.*"%>
<%!
// サーブレットのinitメソッドに相当
public void jspInit() {
try {
// JDBCドライバをロード
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
} catch (Exception e) {
e.printStackTrace();
}
}
%>
<html>
<head><title>テーブル_JSP版</title></head>
<body>
<P>データベース一覧</P>
<table border='1'><tr><th>番号</th><th>名前</th><th>電話番号</th></tr>
<%
// データベースへのアクセス開始
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
try {
// データベースに接続するConnectionオブジェクトの取得
con = DriverManager.getConnection("jdbc:sqlserver://localhost;DatabaseName=Name","ID","PW");
// データベース操作を行うためのStatementオブジェクトの取得
stmt = con.createStatement();
// SQL()を実行して、結果を得る
rs = stmt.executeQuery(
"SELECT 番号, 名前, 電話番号 FROM Table");
// 得られた結果をレコードごとに表示
while (rs.next()) {
%>
<tr>
<%-- レコードのCUSTOMER_NUMフィールドを表示 --%>
<td><%= rs.getString("番号")%></td>
<%-- レコードのNAMEフィールドを表示 --%>
<td><%= rs.getString("名前")%></td>
<%-- レコードのPHONEフィールドを表示 --%>
<td><%= rs.getString("電話番号")%></td>
</tr>
<%
}
} catch (Exception e) {
e.printStackTrace();
} finally {
// データベースとの接続をクローズ
try { rs.close(); } catch (Exception e) {}
try { stmt.close(); } catch (Exception e) {}
try { con.close(); } catch (Exception e) {}
}
%>
</table>
</body>
</html>
No.9ベストアンサー
- 回答日時:
>ホスト に TCP/IP 接続できませんでした。
>java.net.ConnectException: Connection refused: connect
のエラーということはSQLServerへの接続が上手くいっていないようです。
プログラムの動き的には
>con = DriverManager.getConnection("jdbc:sqlserver://localhost;DatabaseName=Name","ID","PW");
上記の行で例外が発生し50行目のcatchで例外が拾われていると思われます。
まずは、この接続設定が本当に正しいか確認してください。
接続設定が正しいとするとSQLServer側の問題かもしれません。
このメッセージで検索したところ、参考URLのページが該当しましのたでご一読ください。
ここからはプログラム側の話でなく、SQLServer側の話になりますので
もし解決に至らないようであればSQLServerのカテゴリで質問した方が良いと思います。
※ARIA9はSQLServerは素人です・・・・
参考URL:http://www.javaroad.jp/bbs/answer.jsp?q_id=20061 …
ARIA9さま
ありがとうございます☆
SQLServerの1433ポートは空いていたので
localhostの部分をSQLServerのIPアドレス+1433で繋がりました!
本当にありがとうございます♪
感謝致します!
最後に1点だけよろしいでしょうか?
SQL構文に日本語が入ると文字化けでエラーになるのですが
これは"jdbc:sqlserver://localhost;DatabaseName=Name","ID","PW");
の部分に何か記述が必要なのでしょうか?
この部分だけお願いします!
No.12
- 回答日時:
定かであありませんが
pageEncoding="Shift_JIS"を
pageEncoding="Windows-31J"
または上記を省略した上で
contentType="text/html; charset=Shift_JIS"を
contentType="text/html; charset=Windows31-J"
に変更すれば可能性はあると
思います。
参考URL:http://www.atmarkit.co.jp/fjava/rensai3/mojibake …
fortranxpさま
pageEncoding="Windows-31J"でしっかり表示されました!
長くご丁寧にご教授頂きまして本当にありがとうございます☆
感謝いたします♪
No.11
- 回答日時:
No.1です
>SQL構文に日本語が入ると文字化けでエラーになるのですが
>これは"jdbc:sqlserver://localhost;DatabaseName=Name","ID","PW");
>の部分に何か記述が必要なのでしょうか?
これについてもエラー内容がわかれば記述して頂けませんでしょうか。
ただ、エラーが起きるといわれてもわかりません。
文字化けということですが、具体的になにが文字化けするのでしょう。
例えば、記述されている下記SQLが
SELECT 番号, 名前, 電話番号 FROM Table
下記のように(?かどうかはわかりませんが)化けるためSQLエラーになるということでしょうか?
SELECT ????, ????, ???????? FROM Table
もし、こういうことでしたらjspのjavaEncodingとプログラムの文字コードが一致していないためだと思います。
ちょっと文字化けするとだけ書かれても判りかねますので
もう少し情報を頂けませんか?
この回答への補足
ARIA9さま
度々申し訳ありません。
文字化けのエラーは解消されました。
SQL接続が成功した後に変えたプログラムの記述に誤りがありました・・・
エラーは出ないのですが<table border='1'>から始まる項目に「電話番号(1)」があるとしますとそれが「電話番号@」とかになります。
これはしょうがないのでしょうか?
度々で申し訳ありませんがご教授下さいませ。
ARIA9さま
この度はご丁寧にご教授頂きました事、とても感謝致します!
勉強不足ですのでこれからまだまだ頑張りたいと思います☆
ありがとうございました♪
No.10
- 回答日時:
fortranxpさま
ありがとうございます☆
URL参考になりました!
SQLServerのIPアドレスをlocalhostに記述した所、表示されました。
助かりました!
ほんとうにありがとうございました♪
No.8
- 回答日時:
No.1です
>エラーはTomcatのLogにて確認致しました。
ExceptionのprintStackTraceメソッドは標準出力となりますので
通常、Tomcatで定義しているログには残りません。
なお、その画面は残念ながらコンパイルエラーになっています。
>out.write(e.get.Message());
getの後ろのピリオドは不要です。
>C:\Program Files\Apache Software Foundation\Tomcat 5.0\work\Catalina\localhost\wl_jsp\org\apache\jsp\test_005fJdbcCustomerTable_jsp.java:19: シンボルを解決できません。
>シンボル: 変数 out
>場所 : org.apache.jsp.test_005fJdbcCustomerTable_jsp の クラス
>out.write(e.get.Message());
追加する場所を間違えています。
51行目のe.printStackTrace()の下に追加してください。
それがわかるように
} finally { ←を明示しておいたのですが・・・
ちょっとわかりにくかったかもしれませんね。
最初から行番号を提示すれば良かったです。すいません。
この回答への補足
ARIA9さま
教えて頂いている立場なのに・・・
こちらこそ分からず申し訳ありませんでした。
おっしゃる通り記述した所、このメッセージがブラウザに表示されました。
ホスト に TCP/IP 接続できませんでした。
java.net.ConnectException: Connection refused: connect
宜しくお願い致します。
No.7
- 回答日時:
No.1です
<table border='1'><tr><th>番号</th><th>名前</th><th>電話番号</th></tr>
→ ここがループ内の処理になりますので、少なくともwhileループ内には到達していません。
</table>
やはりtry{}catch(){}の途中で例外があがっているように思います。
例外が出ていないというのは何をもって確認しました?
Exceptionのスタックトレースがコンソールにでていないことは確認しましたか?
ためしに
catch (Exception e) {
e.printStackTrace();
} finally {
のe.printStackTrace();の下に
out.write(e.getMessage());
を追加してみてください。
これで例外が発生していればブラウザ上にエラーメッセージが表示されますので
そちらの内容を回答に補足してください。
この回答への補足
ARIA9さま
ありがとうございます。
エラーはTomcatのLogにて確認致しました。
おっしゃる通り記述した所、以下のエラーがでました。
2007-04-13 12:56:15 StandardWrapperValve[jsp]: サーブレット jsp のServlet.service()が例外を投げました
org.apache.jasper.JasperException: JSPのクラスをコンパイルできません
JSPファイル: /test_JdbcCustomerTable.jsp の中の3行目でエラーが発生しました
生成されたサーブレットのエラーです:
C:\Program Files\Apache Software Foundation\Tomcat 5.0\work\Catalina\localhost\wl_jsp\org\apache\jsp\test_005fJdbcCustomerTable_jsp.java:19: シンボルを解決できません。
シンボル: 変数 get
場所 : java.lang.Exception の クラス
out.write(e.get.Message());
^
JSPファイル: /test_JdbcCustomerTable.jsp の中の3行目でエラーが発生しました
生成されたサーブレットのエラーです:
C:\Program Files\Apache Software Foundation\Tomcat 5.0\work\Catalina\localhost\wl_jsp\org\apache\jsp\test_005fJdbcCustomerTable_jsp.java:19: シンボルを解決できません。
シンボル: 変数 out
場所 : org.apache.jsp.test_005fJdbcCustomerTable_jsp の クラス
out.write(e.get.Message());
^
エラー 2 個
お手数をお掛けしまして申し訳ありませんがお願いいたします。
何度もすみません。
Tomcatのstdout.logというテキストに以下のメッセージがありました。
関係ありますでしょうか?
com.microsoft.sqlserver.jdbc.SQLServerException: ホスト に TCP/IP 接続できませんでした。
宜しくお願い致します。
No.5
- 回答日時:
No.1です
>ちなみにaccessでODBCリンクしたmdbを見にいく場合は
>パスを指定する必要があるのでしょうか?
とのことですが、プログラムを見る限りJDBCは直接SQLServerに繋ぎにいっていますよね。
ということは少なくともプログラム側でmdbにアクセスする必要はまったくないと思うのですが。
プログラム側からmdbを経由する必要があるとすると
SQLServer←ODBCリンク←mdb←ODBC設定しておいてODBC-JDBCブリッジドライバ←プログラムからコールになったと思いますが・・・
ARIA9さま
お世話になっております。
ブラウザ表示中にソースを見たらこんな感じでした。
これってテーブル内容表示まで行ってないのでしょうか?
宜しくお願い致します。
<html>
<head><title>テーブル_JSP版</title></head>
<body>
<P>データベース一覧</P>
<table border='1'><tr><th>番号</th><th>名前</th><th>電話番号</th></tr>
</table>
</body>
</html>
No.4
- 回答日時:
SQLserver2000 JDBCドライバーを
WEB-INF\libに配置してますか?
http://www.microsoft.com/japan/msdn/sqlserver/do …
参考URL:http://www.microsoft.com/japan/msdn/sqlserver/do …
この回答への補足
fortranxpさま
ありがとうございます☆
SQLserver2005なのでマイクロソフトのHPより
ダウンロードして配備されております。
よろしくお願い致します。
No.3
- 回答日時:
No.1です
>もう1点ご教授頂きたいのですが、これはODBCを通じて直接SQLServerへ見に行っているのでしょうか?
すいません。SQLServerは詳しくないので詳細はわかりかねます。
要は、そもそもDBのテーブルにレコードが無ければ
無いものは取れないわけで、Java側の問題かどうか切り分けるために、
JavaからではなくDBの中身を確認した方が良いんではないかということです。
なのでaccessでODBC接続を使用してSQLServerに接続するのでも構いませんし、
質問者様が普段使われているツールがあるのでしたらそれでも構いません。
この回答への補足
ARIA9さま
ありがとうございます☆
確かめた所、確かにテーブルにレコードはあるのですが・・・
一度、問題を切り分けて調べてみたいと思います。
ちなみにaccessでODBCリンクしたmdbを見にいく場合は
パスを指定する必要があるのでしょうか?
記述の場所が分からないので申し訳ありません。
何度もすみません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Selenium.ChromeDriverの使い方について 7 2022/09/22 06:43
- PHP htmlで複数の個数入力欄を表示させるには 1 2022/09/20 03:11
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- PHP PHP一覧表示した項目にリンクをはりたい 1 2023/07/12 17:08
- PHP DBのハッシュ化したパスワードをpassword_verifyで戻し照合したのですが上手く行きません 2 2023/02/06 13:24
- HTML・CSS テーブルタグのセルの幅の一部だけを指定 1 2023/03/12 12:02
- PHP PHP MySql ページング 2 2022/09/20 06:38
- HTML・CSS 自身のHPにYouTube動画を貼り付けるのが出来なくなり困ってます 1 2022/11/11 10:44
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「タイプ初期化子が例外をスロ...
-
SQLException getNextException()
-
Timestamp型への変換について(J...
-
連続する「\\」をひとつの「\\...
-
nullで、return出来るのはどん...
-
【JAVA】与えられた金額を貨幣...
-
基本的にはないと言われました
-
0除算の例外処理ができない!!...
-
全角スペースのチェックについて
-
文字列からダブルクオートの削除
-
VB.Net Object型 空かどうか
-
VBA 400エラー 1004エラー
-
Excelでのエラー
-
JAVA 日付チェック方法 年・...
-
do文とInputMismatchException処理
-
ファイルダイアログを開いた時...
-
エクセルVBAで、条件に一致する...
-
変数名の付け方
-
レコード件数の表示
-
C#において、同じインスタンス...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「タイプ初期化子が例外をスロ...
-
【JAVA】与えられた金額を貨幣...
-
連続する「\\」をひとつの「\\...
-
文字列からダブルクオートの削除
-
VB.Net Object型 空かどうか
-
0除算の例外処理ができない!!...
-
VB.NETで16進数が正しいかどう...
-
数字か文字列かを判定する関数
-
例外ってIf文の中に入れますか...
-
C# マルチスレッドにおける例外...
-
スタックオーバーフローとは?
-
String型の日付(2005/11/25)の...
-
Timestamp型への変換について(J...
-
C# UriFormatExceptionの回避
-
ADOによるレコードの追加/更新
-
VBA Evaluate関数 型が一致しま...
-
WebClient()以外でネットにアク...
-
時間の取得
-
C#の捕捉されない例外処理の対...
-
javaプログラムで背景色を変更...
おすすめ情報