こんばんは!
現在、SQL Serverのテーブルに接続してJSPのテキストボックスをキーに検索結果を次のJSPに表示させるWEBを作成しています。
そこで検索結果を表示させるJSPでnvercharの値'AHFKS23847'をデータ型intに変換できませんでした。と表示されます。
ネットや書籍で調べましたが全くでておらず困っております。
ご教授下さい!
String param = request.getParameter("param");
"SELECT * FROM T_Table where Number_Co="+param);
として記述しております。
Number_CoはSQL Serverではテキスト型と設定されております。
宜しくお願いいたします!
No.10ベストアンサー
- 回答日時:
ボタン毎にformを分けるのであれば
// 得られた結果をレコードごとに表示
while (rs.next()){
%>
<form method="post" action="次のJSP">
<input type="hidden" name="kanriId" value="<%= rs.getString("管理ID")%>">
<tr>
<TD><span style="font-size:10pt;color:#336000">F7</span></TD>
</tr>
<tr>
<td><input type="submit"></td>
</tr>
</form>
<%
}
のような感じでループ内で生成すれば良いと思います。
formタグの位置によってレイアウトが若干崩れるかもしれませんので
その際はformタグの位置を調整してみてください。
この回答への補足
ARIA9さま
ありがとうございます☆
それでString num = request.getParameter("kanriID");にて受け取れば
いいと言う事ですね?
なるほど!
記述までご教授頂き、本当にありがとうございます!!
1度チャレンジしてみます♪
ARIA9さま
うまくできました!!
当初の質問とは違う質問にも丁寧にお答え頂きまして本当にありがとうございます☆
なるべく自分の力で勉強して進んで行きたいとは思いますが、もしも壁に当たった際にはまたご教授下さいませ。
本当にありがとうございました♪
No.9
- 回答日時:
1・各ボタン毎にformを分ける
↓をボタン毎に記述する対応
<form method="post" action="次のJSP">
<input type="hidden" name="kanriId" value="管理IDの値">
</form>
2・formを1つにしたければjavascriptでhiddenタグにセット
例えば
function setVal(karniId) {
document.forms[0].kanriId = kanriId;
}
みたいなスクリプトを書いておいて、
サブミットボタンで下記要領でhiddenタグに値をセット
<form method="post" action="次のJSP">
<input type="hidden" name="kanriId" value=""><!-- 管理IDをセットするhiddenタグ -->
~中略~
<input type="submit" onclick="setVal('管理IDの値')">
とかで如何でしょうか。
この回答への補足
ARIA9さま
ありがとうございます☆
ボタン毎にformを分けたいと考えておりました。
その場合はこのJSPでループの際にformを作っていくイメージになるのでしょうか??(記述等はわかりませんが・・・)
ご教授宜しくお願い致します♪
No.8
- 回答日時:
>契約番号_Coではなく管理IDでSQLを書きたいのですが。
(SQL Serverではオートナンバー型です。)とのことですので、このSQLで取得した列に管理IDという列が存在し
(*で全列取得していますが、その中に含まれているということでよろしいですよね?)
その値を次のJSPへ渡して、次のJSPでは管理ID列をWHERE句に記述したいということでよろしいでしょうか?
だとすると、このJSPページで
<form method="post" action="次のJSP">
<input type="hidden" name="kanriId" value="管理IDの値">
</form>
のような形式で値を次のJSPへ受け渡して、次のJSPではkanriIdの値を
request.getParameterで取得してSQLを記述するなどが考えられます。
セッションや、クッキーに保持する方法もありますが、画面渡しと考えると
無駄にセッションに情報を持たせるよりはhiddenタグの方が良いかと思います。
解釈が違うようでしたら、ご指摘ください。
この回答への補足
ARIA9さま
ありがとうございます☆
認識はあってございます。
<TD><span style="font-size:10pt;color:#336000">F7</span></TD>
の下へ上記、記述とボタンを作ってそのボタンを押すと次のJSPへ移動するイメージを思っています。
ループになっておりますので契約番号_Coに該当したレコードが複数でてきますのでvalue="管理IDの値"が既定ではない形になります。
ここでの記述をどの様にさせて頂ければいいのかわかりません。
度々、申し訳ありませんがご回答よろしくお願い申し上げます。
No.6
- 回答日時:
表示された際に文字化けしていて
ブラウザの(IEと仮定して)表示メニュー→エンコードを指定すれば見れるということですか?
だとするとMETAタグを付けて画面の文字コードを明示すれば解決するかもしれません。
<META http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
応答ヘッダ絡みかもしれませんので、確認できるようであれば
応答ヘッダでキャラクタセットが指定されているかも確認した方が良いでしょう。
この回答への補足
ARIA9さま
ご回答ありがとうございます!
>ブラウザの(IEと仮定して)表示メニュー→エンコードを指定すれば見れるということですか?
はい。その通りです。
頂いたコードで文字化け解消されました☆
本当にありがとうございます♪
ほんとに最後なのですが・・・
今回は受け取ったデータを
("SELECT * FROM T_Transfer_Communication_Vote where 契約番号_Co='"+ param +"'");
で表示させていましたがこのJSPからPOSTで送って契約番号_Coを他の項目で受け取る事は可能なのですか?(このJSPから次のJSPで・・・)
契約番号_Coではなく管理IDでSQLを書きたいのですが。(SQL Serverではオートナンバー型です。)
教本などにも載っていないのでご存知でしたらご教授下さい!
No.5
- 回答日時:
もしかしたら、
String param = request.getParameter("param");
↓
int param=Integer.parseInt(request.getParameter("param"));
JSPでの型はNVERCHRなので文字型ですが
契約番号_Coはint型みたいですね。
でもText型が本当みたいなのでだめかも。。。。
この回答への補足
fortranxpさま
色々しまして
String param = (request.getParameter("param"));
とした所上手くいきました!!
本当にありがとうございます☆
しかし、表示された際には???の文字化けになります。
ブラウザのエンコードで直せばみれるのですが・・・
いい方法ありましたらご教授下さいませ☆
No.4
- 回答日時:
文字化けの件ですが、JSPファイルをUTF-8で保存していませんか?
で、コンパイル時の文字コード指定がWindows-31J(もしくはShift_JIS)になっていたとすると
当該の文字化けが発生します。
現在、開発環境がないところですので実動作は確認できていませんが
「契約番号」をUTF-8でテキスト保存し、Shift_JISで開いたところ似たような化け方をしました。
JSPソースの文字コード、JSPページのエンコード、JSPコンパイルの文字コードは揃えておかないと文字化けの原因になりますよ。
この回答への補足
ARIA9さま
ありがとうございます☆
現在のソースは以下の通りです。
Windows-31Jで保存してございます。
SQLは)を付け解決致しました。
しかし、メインのJSPから以下のJSPにてPOSTにて値を送っているのですがString param = request.getParameter("param");にてシンボルが解決できませんとエラーがでます。
受け取りの記述が間違っていますでしょうか?
ご教授頂けますようお願い致します!
<%@page contentType="text/html; charset=Windows-31J"%>
<%@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>検索結果一覧</title></head>
<BODY bgcolor="#ffffcc">
<span style="font-size:24pt;color:#cc99cc"><B>検索結果一覧</B></span>
<TABLE border="3" BORDERCOLOR="#9999ff" cellspacing="1" cellpadding="1">
<TR>
<TD><span style="font-size:10pt;color:#336000">F1</span></TD>
<TD><span style="font-size:10pt;color:#336000">F2</span></TD>
<TD><span style="font-size:10pt;color:#336000">F3</span></TD>
<TD><span style="font-size:10pt;color:#336000">F4</span></TD>
<TD><span style="font-size:10pt;color:#336000">F5</span></TD>
<TD><span style="font-size:10pt;color:#336000">F6</span></TD>
<TD><span style="font-size:10pt;color:#336000">F7</span></TD>
</TR>
<%
// データベースへのアクセス開始
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
try {
// データベースに接続するConnectionオブジェクトの取得
con = DriverManager.getConnection("jdbc:sqlserver://10.121.67.247:1433;DatabaseName=Name","ID","PW");
// データベース操作を行うためのStatementオブジェクトの取得
stmt = con.createStatement();
String param = request.getParameter("param");
// SQL()を実行して、結果を得る
rs = stmt.executeQuery(
"SELECT * FROM Table where 契約番号_Co='"+ param +'"");
// 得られた結果をレコードごとに表示
while (rs.next()){
%>
<tr>
<td><%= rs.getString("F1")%></td>
<td><%= rs.getString("F2")%></td>
<td><%= rs.getString("F3")%></td>
<td><%= rs.getString("F4")%></td>
<td><%= rs.getString("F6")%></td>
<td><%= rs.getString("F7")%></td>
<td><%= rs.getString("F8")%></td>
</tr>
<%
}
} catch (Exception e) {
e.printStackTrace();
// エラー表示プログラム
out.write(e.getMessage());
} finally {
// データベースとの接続をクローズ
try { rs.close(); } catch (Exception e) {}
try { stmt.close(); } catch (Exception e) {}
try { con.close(); } catch (Exception e) {}
}
%>
</table>
</body>
</html>
No.3
- 回答日時:
C:\Program Files\Apache Software Foundation\Tomcat 5.0\work\Catalina\localhost\wl_jsp\org\apache\jsp\Search_jsp.java:88: ')' がありません。
')'が足りないようですが?
私は「"SELECT * FROM T_Table where Number_Co='" + param + "'"
」答えましたが、
SQL文の部分を最小限の表現で書いたまでです。
意味を理解せず、そのままカット&ペーストして使っていませんか?
"SELECT * FROM Table where 螂醍エ?逡ェ蜿キ_Co='"+ param +"'";
ですが、
文字化けはともかく(文字列内で発生しているため)、最後のセミコロンの前に')'がひつようなのではありませんか?
この回答への補足
marimari01さま
ありがとうございます。
すみません。
SQLについても勉強不足な所があり完全に把握はできていなかったと思っております。
しかし、コピー&ペーストではなく自分で記述して("SELECT * FROM T_Table where Number_Co='" + param + "'");等もやってみてのエラーでした。
すみません。ご教授下さい。
No.2
- 回答日時:
JSPのエラーと言うよりはSQLのエラーですね。
Oracle専門でSQLServerは詳しくないのですが、
Number_Coという列の定義が文字列型でご質問のエラーがでているとすると
No.1の方が仰っている通り、シングルクォートでパラメータを括らないことで暗黙の数値変換がかかっており
結果、変換不能でエラーになっています。
Number_Coという列の定義が数値型だったとすると
パラメータの暗黙型変換が列の型に合わせて行われており
結果、変換不能でエラーになっています。
どちらのケースかは、実際ご確認ください。
ARIA9さま
前回に引き続き申し訳ございません・・・
暗黙の数値変換ですか?
数値として処理されてしまうという事ですか!
ご丁寧なご解説分かりやすかったです☆
ありがとうございます♪
No.1
- 回答日時:
"SELECT * FROM T_Table where Number_Co="+param);
は
"SELECT * FROM T_Table where Number_Co='" + param + "'"
では?
marimari01さま
本日、実行した所エラーが出てしまいました。
2007-04-17 09:16:05 StandardWrapperValve[jsp]: サーブレット jsp のServlet.service()が例外を投げました
org.apache.jasper.JasperException: JSPのクラスをコンパイルできません
JSPファイル: /Search.jsp の中の32行目でエラーが発生しました
生成されたサーブレットのエラーです:
C:\Program Files\Apache Software Foundation\Tomcat 5.0\work\Catalina\localhost\wl_jsp\org\apache\jsp\Search_jsp.java:88: ')' がありません。
"SELECT * FROM Table where 螂醍エ?逡ェ蜿キ_Co='"+ param +"'";
螂醍エ?逡ェ蜿キ_Coの部分は契約番号という日本語なので文字化けしたのだと思います。
宜しくお願い致します!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- SQL Server [SQLServer] テーブル名からカラム名を取得する 1 2022/08/23 21:20
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- その他(プログラミング・Web制作) pythonリストの特定の値を表示htmlで表示できない 2 2022/05/14 05:48
- Java 問題作成のWebアプリの作り方を教えてください 1 2022/11/26 22:01
- MySQL 書籍の内容はまともでしょうか? 1 2023/01/22 03:07
- その他(プログラミング・Web制作) Rでのスクリプトのご相談 3 2022/12/08 16:22
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
- PHP PHP MySql ページング 2 2022/09/20 06:38
- Oracle 質問です。 下記のテーブルとデータがあり、 取得想定結果のように出力したいです。 下記のsqlだと0 2 2023/05/23 19:10
- Access(アクセス) Accessテーブルの結合で別々のテーブルのフィールドを組み合わせて値を出す方法について 2 2022/07/20 19:43
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
リクエストに応じたselectedの...
-
フォーム上で押されたボタンに...
-
「<c:forEach タグが終了し...
-
int型の内容をbyteの配列にコピー
-
jspでjavascript関数へ引数を渡...
-
HashMapで、valueにマッピング...
-
StrutsでPOSTのデータ(リクエ...
-
ラジオボタンの選択肢をサーブ...
-
JSPでテキストボックスのループ...
-
フォームで同じ複数のnameで違...
-
jspファイルで注文フォームの合...
-
JSP+Servletで終了ボタン
-
Struts2のifタグについて
-
JSPでサーバーにファイルのアッ...
-
JSPでのサブミット判定
-
formでテキストとファイルタイ...
-
jspの文字化けの解消方法を教え...
-
JSPでのリストボックス表示
-
JSP→JSP フォームチェック
-
JSFでJavaScriptを使用するには?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フォーム上で押されたボタンに...
-
リクエストに応じたselectedの...
-
フォームで同じ複数のnameで違...
-
int型の内容をbyteの配列にコピー
-
javaでDBから取得したデータのJ...
-
「<c:forEach タグが終了し...
-
strutsを使用したjspでjavascri...
-
EL式 true falseを表示
-
JSPでのリストボックス表示
-
StrutsでPOSTのデータ(リクエ...
-
formでテキストとファイルタイ...
-
jspファイルで注文フォームの合...
-
jspでjavascript関数へ引数を渡...
-
ラジオボタンの選択肢をサーブ...
-
struts-config.xmlの設定
-
動的に作成したラジオボタンの...
-
JSP+Servletで終了ボタン
-
Servletへフォームから配列を送...
-
Strutsでの入力データチェック...
-
JSPとサーブレット間での画面遷...
おすすめ情報