• ベストアンサー

データベースとのやり取り(サーブレット)

String q1 = "USE riyou"; st.execute(q1); String q2 = "LOCK TABLE r1 WRITE"; st.execute(q2); String q3 = "SELECT * FROM r1 where ban=" + items[0]; ResultSet rs = st.executeQuery(q3); String set[] = {" ","0","1","2","3","4","5","6","7","8","9"}; for( int i = 0;i < 11;i++ ){ if( rs.getString("tou") == set[i] ){ out.println("test"); } out.println("" + set[i] + "0000000"); } touの中身は"1"なんですがIFの条件に合いません。なぜなんでしょうか??set[]の中には"1"が入っているはずなんですが・・・。ちなみにtouもset[2]も文字の"1"なんです。昨日から2日悩んでます;;原因のわかる方いましたらお願いします。

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

  • ベストアンサー
noname#49664
noname#49664
回答No.1

とりあえずデータベース以前の問題として・・。 誤:if( rs.getString("tou") == set[i] ) 正:if( rs.getString("tou").equals(set[i]) ) でしょうか。 Stringはオブジェクトですから==で比較できません。

kuninari
質問者

お礼

お恥ずかしいです・・・^^; 再度基本から勉強します。素早い回答ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

JAVAでは、Stringの比較には、 equalsを使います なので if( rs.getString("tou").equals(set[i]) ){ とします

kuninari
質問者

お礼

回答ありがとうございます。1から出直します・・・; これでやっと先に進めます^^;

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • HTMLの質問なのかJAVAサーブレットの質問なのか微妙なのですがテー

    HTMLの質問なのかJAVAサーブレットの質問なのか微妙なのですがテーブルを一行に二つ表示したいのですが表示はできるんですが表示位置を中央にすることができなくて困ってます どうすれば中央にすることができますか? while(rs2.next()){ String name = rs2.getString("st.staff_name"); String kana = rs2.getString("st.staff_kana"); String birthday = rs2.getString("st.birthday"); String sex = rs2.getString("sm.sex"); String blood = rs2.getString("bm.blood_type"); String hight = rs2.getString("st.hight"); String weight = rs2.getString("st.weight"); String reration = rs2.getString("st.reration"); String mobile = rs2.getString("st.mobile_tel"); String tel = rs2.getString("st.tel"); out.println("<br></br><TABLE border=0 align=\"center\"><table border=1 align=\"left\"><tr><th width=150>氏名</th>"); out.println("<td width=200>"+name+"</td></tr><tr>"); out.println("<th>ヨミガナ</th>"); out.println("<td>"+kana+"</td></tr><tr>"); out.println("<th>生年月日</th>"); out.println("<td>"+birthday.replace("-", "/")+"</td></tr><tr>"); out.println("<th>性別</th>"); out.println("<td>"+sex+"</td></tr><tr>"); out.println("<tr><th>身長</th>"); out.println("<td>"+hight+"</td></tr>"); out.println("<tr><th>体重</th>"); out.println("<td>"+weight+"</td></tr>"); out.println("<tr><th>血液型</th>"); out.println("<td>"+blood+"</td></tr>"); out.println("<tr><th>携帯電話番号</th>"); String mtel=""; if(mobile!=null&&mobile.length()>0){ for (int i = 0; i < mobile.length(); i++) { char ch = mobile.charAt(i); if(i==3){ mtel+="-"; } if(i==7){ mtel+="-"; } mtel+=ch; if(mobile.length()==0){ mtel="-"; } } }else{ mtel="不所持"; } out.println("<td>"+mtel+"</td></tr>"); out.println("<tr><th>自宅電話番号</th>"); String ttel=""; for (int i = 0; i < tel.length(); i++) { char ch = tel.charAt(i); if(i==4){ ttel+="-"; } if(i==6){ ttel+="-"; } ttel+=ch; } out.println("<td>"+ttel+"</td></tr>"); out.println("<tr><th>続柄</th>"); out.println("<td>"+reration+"</td>"); out.println("</tr></table>");

  • データベースから取得した値をセレクトメニューに入れたいのですが・・

    Java(servlet)からMySQLに接続し、ブラウザ画面ではJavaScriptを使ったプログラムを作っています(初心者なので、本を見ながらですが)。 ResultSet rs1=st1.executeQuery("select hiro from hirotable"); While(rs1.next()){ String hirodata=rs1.getString(1); out.println("<form>");  out.println("<select>"); out.println("<option>+hirodata+</option>"); データベースから取得した値をセレクトメニュー内にすべて表示させたいのですが、このようにするとデータの数だけセレクトメニューができてしまいます。配列の考え方が今ひとつピンとこないのですが、これと関係しているのでしょうか?どなたか教えていただけないでしょうか? よろしくお願い致します。  

    • ベストアンサー
    • Java
  • データベースへの接続で困ってます

    JSPを関連させてcom.mysql.jdbc.Driverというドライバでデータベースに接続したいのですが、エラーが出てしまってどうすればいいかお手上げ状態になっています。プログラムを貼るので、何かおかしいとこがありましたら教えてもらいたいです。よろしくお願いします。 /*プログラム*/ <%@ page import="java.sql.*" %> <html> <head> <title>データを表示する</title> </head> <body> <% //データベースに接続する Class.forName("com.mysql.jdbc.Driver"); String url = "jdbc:mysql://localhost/sqldb?useUnicode=true&characterEncoding=SJIS"; String user = "matsuzaki"; String password = "matsuzaki"; Connection conn = DriverManager.getConnection(url, user, password); //データを取得する Statement st = conn.createStatement(); String sql = "SELECT * FROM cd"; //実行するSQL ResultSet rs = st.executeQuery(sql); //データを全件表示する out.println("<table border=1>"); while(rs.next()){ out.println("<tr>"); out.println("<td>" + rs.getInt("name") + "</td>"); out.println("<td>" + rs.getString("artist") + "</td>"); out.println("<td>" + rs.getInt("price") + "</td>"); out.println("</tr>"); } out.println("</table>"); //データベース接続を閉じる conn.close(); %> </body> </html>

    • ベストアンサー
    • MySQL
  • jsp、サーブレットの質問です。

    Tomcatを使用してjspとサーブレットを使い掲示板のような投稿サイトもどきを作成していますが解決できない部分があります。 ↓は表示用のjspです♪ <html> <head> <title>Insert title here</title> </head> <body> <% String lsts = (String)request.getAttribute("lst"); %> <table border="4"> <tr> <td>日時</td> <td>タイトル</td> <td>スレッド主</td> <td></td> </tr> <tr> <td><%for(int i = 0; i<lsts.length(); i++){ out.println(lsts); } %> </td> <td><%out.println(); %></td> <td><%out.println("");%></td> <td> </td> </tr> </table> </form> </body> </html> こちらがサーブレットです otected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { /*DB接続処理は省略します*/ try{ ps = (PreparedStatement) con.prepareStatement(sql); String sql = "select * from thred"; ResultSet rs = ps.executeQuery(); //テーブル内一覧取得 while(rs.next()){ rs.getString("time"); rs.getString("title"); rs.getString("id"); rs.getString("thredid"); String s = (rs.getString("time")+","+ rs.getString("title")+","+rs.getString("id")); String[] lsts = s.split(","); List<String> thlists = Arrays.asList(lsts); String ss = (thlists.get(0)); request.setAttribute("thlst",ss); RequestDispatcher dispatcher= request.getRequestDispatcher("/list.jsp"); dispatcher.forward(request,response); } }catch(SQLException e){ e.printStackTrace(); } catch(ClassNotFoundException e){ e.printStackTrace(); }finally{ try { con.close(); } } } jspの方にサーブレットでthredDBから抜き取ったtimeとtitleとidを全て表示させたいのですが 現状だと 2014-06-03 06:45:02  aaaa 1 の行だけがたくさん表示されてしまいます 恐らくスコープを取得した時点でこの↑の1行のものしかとれてこれていないのだと思います... どのように処理を行ったらよいのでしょうか? DBの中身は画像添付いたしますっ

  • JSPのループについて・・・

    JSPのループで以下以下のように設定してます。 string ruikeisql3="SELECT SITENKODO,HIDUKE,URIAGE,RIEKI,TOJITU FROM SABISU WHERE SITENKODO='"+no+"'AND YEAR(HIDUKE)="+nen+"AND MONTH(HIDUKE)="+tuki+"order by HIDUKE"; ResultSet RS2=st1.executeQuery(ruikeisql3); RS2.next(); String hiduke=RS2.getString("hiduke"); for(int i=1;i<32;i++){ out.print(i+","); out.print(RS2.getString("uriage")+","); out.print(RS2.getString("rieki")+","); out.print(RS2.getString("toujitu")+","); out.print(RS2.getString("\r"); if(rs2.next()){ 以下省略 実行すると1~31日までの実績が表示されるのですが、1日ごとに一度ループを終わらせて別の計算式を入れたいのですがどのようにしたら良いのか・・・・ お手数ですが宜しくお願いし致します。

  • Webアプリケーション checkboxでのデータベース削除

    お世話になっております。 早速なのですが、JSP, Servlet, MySQL, tomcat, javaなどをつかいWebアプリケーションを作成したいと思い投稿しました。 まずJSPのページにデータベース内容一覧を表示させそれらにinput type=checkboxを付けsubmitを使い、次のページで「~~~を削除しますか?」と表示させたいのですが・・・。 どのように次のページにデータベースとcheckboxの情報を引き渡すのかが分からなくなってしまいました。 どうかご教授ください。それとこれに関するサイトなどございましたらお教えください。 ----------------------------------------- <%@ page language="java" contentType="text/html; charset=Shift-Jis" import="java.sql.*"%> <html> <head> <title>一覧表示</title> </head> <body> <% String lh = "localhost:xxxx"; //ホスト名 String user = "xxxx"; //user名 String DB = "system"; //データベース名 String rr = "接続中"; //接続ステータス //接続データベース情報の表示 out.println("<h1 align='center'><u>マスターメンテナンスシステム</u></h1>"); out.println("<table border='1' align='left' bgcolor='#ffffff' width='100%'>"); out.println("<tr bgcolor='#ffffff'>"); out.println("<td><h2 align='center' style='background:#cccccc'>接続データベース</h2>"); out.println("<div><br></div>"); out.println("<h3>ホスト     <label>" + lh + "</label></h3>"); out.println("<h3>ユーザー   <label>" + user + "</label></h3>"); out.println("<h3>データベース <label>" + DB + "</label></h3>"); out.println("<h3>ステータス  <label>" + rr + "</label></h3>"); %> <form action="delete3.jsp" method="POST"> <h1 style="background:#cccccc" align="center"><u>テーブル詳細</u></h1> <table border="0" width="100%"> <tr style="background:#00ccff"> <th>/</th><th>NO.</th><th>PC名</th><th>構成価格/値段</th><th>OS</th><th>CPU</th><th>モニター</th><th>詳細</th></tr> <% Class.forName("org.gjt.mm.mysql.Driver"); Connection db=DriverManager.getConnection("jdbc:mysql://localhost:xxxx/sistem?user=xxxx&password=xxxx&useUnicode=true&characterEncoding=SJIS"); Statement sttSql=db.createStatement(); ResultSet rs=sttSql.executeQuery("SELECT * FROM dell_pc"); while(rs.next()) { String number=rs.getString("number"); out.println("<tr style='background:#ffffcc'>"); out.println("<td><input type='checkbox' name='tables'></td>"); out.println("<td>" + rs.getString("number") + "</td>"); out.println("<td>" + rs.getString("PC") + "</td>"); out.println("<td>" + rs.getString("kakaku") + "</td>"); out.println("<td>" + rs.getString("OS") + "</td>"); out.println("<td>" + rs.getString("CPU") + "</td>"); out.println("<td>" + rs.getString("display") + "</td>"); out.println("<td><a name='詳細' href='b.jsp?number=" + number + "'>" + number + "</a></td>"); out.println("</tr>"); } sttSql.close(); db.close(); %> </table> <a href="a.jsp">TOPへ</a> <input type="submit" value="削除"> </form> </body> </html> ----------------------------------- 環境ですがjdk1.5.0_11、MySQL5.0、tomcat6.0、eclipse3.2です。

  • サーブレット Java 

    サブクラス(内部クラス?)の内容をサーバで表示したいです 一度、同じ質問をしましたが解決できず、再質問いたしました。 ご回答よろしくお願いします。 まず、<jsp:include flush="true" page="/servlet/page.Sflow1"/>を使い jspでサーブレットを表示しています。 サーブレットではサブクラスを使用していますが、そのサブクラスの内容をサーバで表示するにはどうすればいいでしょうか。 以下、そのソースです。 ・・・・ public class Sflow1 extends HttpServlet{ private static final long serialVersionUID = 1L; public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String sql="select id,c_id,barcode from Flow order by id,c_id,date"; System.out.println("sql="+sql); //中略 HashMap<String,Keiro> hsFlow = new HashMap<String,Keiro>(); String idbk=""; String flowbk=null; while(rs.next()){ String id=rs.getString(1)+":"+rs.getString(2); String flow=rs.getString(3); if(id.equals(idbk)){ if(flowbk!=null){Keiro keiro=hsFlow.get(flowbk);if(keiro == null) keiro = new Keiro(); keiro.addKeiro(flow); hsFlow.put(flowbk,keiro); } } idbk = id; flowbk = flow; } PrintWriter out=response.getWriter(); Object maekeiro[]=hsFlow.keySet().toArray(); Arrays.sort(maekeiro); for(int i=0;i<maekeiro.length;i++){ System.out.println(maekeiro[i]+"からの動き"); hsFlow.get(maekeiro[i]).viewData(); out.println(maekeiro[i]+"からの動き"); } } //中略 class Keiro{ private HashMap<String,Integer> hsNext = new HashMap<String,Integer>(); private int soukei = 0; public void addKeiro(String atokeiro){ Integer i = hsNext.get(atokeiro); if (i==null) i=new Integer(0); hsNext.put(atokeiro,new Integer(i.intValue()+1)); soukei++; } public void viewData(){ Object atokeiro[]=hsNext.keySet().toArray(); Arrays.sort(atokeiro); for(int i=0;i<atokeiro.length;i++){ System.out.println("→"+atokeiro[i]+" "+(hsNext.get(atokeiro[i]).intValue()*100/soukei)+"%"); //このSystem.out.println(・・・)の部分をサーバで表示したいです。 } } } どうすれば標準出力(System.out.println)で表示した内容をサーバで表示することができるのでしょうか? サーブレットを宣言できないのでレスポンスできず・・・(そもそもサブクラスでサーブレットは宣言できるのですか?) 具体的なソース等ご教示お願いいたします。

    • ベストアンサー
    • Java
  • Java PostgreSQL スクリプトレット

    スクリプトレットを使用し、ログイン画面を作成しようと考えています。 <%@ page import="java.io.*,javax.servlet.*,javax.servlet.http.*,java.net.*,java.sql.*" %> <% request.setCharacterEncoding("Shift_JIS"); String id = (String)request.getParameter("id"); String pass = (String)request.getParameter("pass"); String drv = "org.postgresql.Driver"; String dsn = "jdbc:postgresql://localhost:5432/?user=postgres&password=aipo"; String sql = "SELECT * FROM TURBINE_USER"; Connection cn = DriverManager.getConnection(dsn); Statement st = cn.createStatement(); ResultSet rs = st.executeQuery(sql); while (rs.next()) { out.println("<P>" + rs.getString(1) + "</P>"); } rs.close(); st.close(); cn.close(); %> 上記を実行すると org.apache.jasper.JasperException: Exception in JSP: /get.jsp:18 となり、 ResultSet rs = st.executeQuery(sql); の時点でエラーとなります。 Statement st = cn.createStatement(); まで正常に動作するのは確認済みです。 類似する質問に http://oshiete1.goo.ne.jp/qa3522131.html がありましたが、解決できませんでした。 どこが間違っていますでしょうか。

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

    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.また、対処方法としては何が考えられるのでしょうか? すみませんが、よろしくお願いします。

  • Javaでデータに登録する度にIDを振る

    下記のコードはSQLにテーブルを作成し、データを登録するコードですが コードを少し足すことで、ついでにIDを自動的に割り振る方法はあるのでしょうか? import java.sql.*; public class Sample1 { public static void main(String args[]) { try{ //接続の準備 String url = "jdbc:derby:cardb;create=true"; String usr = ""; String pw = ""; //データベースへの接続 Connection cn = DriverManager.getConnection(url, usr, pw); //問い合わせの準備 DatabaseMetaData dm = cn.getMetaData(); ResultSet tb = dm.getTables(null, null, "車表", null); Statement st = cn.createStatement(); String qry1 = "CREATE TABLE 車表(番号 int, 名前 varchar(50))"; String[] qry2 = {"INSERT INTO 車表 VALUES ('伊藤', '男性')", "INSERT INTO 車表 VALUES ('佐藤', '女性')", "INSERT INTO 車表 VALUES ('山田', '男性')"}; String qry3 = "SELECT * FROM 車表"; if(!tb.next()){ st.executeUpdate(qry1); for(int i=0; i<qry2.length; i++){ st.executeUpdate(qry2[i]); } } //問い合わせ ResultSet rs = st.executeQuery(qry3); //データの取得 ResultSetMetaData rm = rs.getMetaData(); int cnum = rm.getColumnCount(); while(rs.next()){ for(int i=1; i<=cnum; i++){ System.out.print(rm.getColumnName(i) + ":"+ rs.getObject(i) + " "); } System.out.println(""); } //接続のクローズ rs.close(); st.close(); cn.close(); } catch(Exception e){ e.printStackTrace(); } } 000001 伊藤 男性 000002 佐藤 女性 000003 山田 男性

    • ベストアンサー
    • Java
このQ&Aのポイント
  • 筆まめ Ver.33(自動継続版)を購入し、バグが発生して使いづらくなったためアンインストールをしたいが、シリアル番号がわからず問題が発生しています。
  • ZERO ウイルスセキュリティのアカウントとして筆まめをダウンロードしたが、以前作成したアカウントのみ表示されて製品登録状況が確認できません。
  • 筆まめ Ver.33の注文日と注文番号がわかるが、シリアル番号入力画面が表示されず問題が発生しています。
回答を見る

専門家に質問してみよう