- 締切済み
データベース呼び出しに使用するワイルドカードについて
javaの勉強を始めたばかりの初心者です。 少し場所をお借りさせていただきたいと思います。 1、データベース上に全社員の勤怠を記録したテーブルがあります。(キーは社 員IDとdate型の日付です) 2、ここで、ログイン時にセッション変数に格納した社員IDと指定専用ページ で指定された「年月」を使い、 この社員の1ヶ月分の出勤した日の出勤時刻~休入~休終~退勤時刻(全てtime 型です)を一覧表示したいのです。 ここで、2番で年と月しか指定していないので、 文字列の足し算を行ってもDB上はdate型で型があいません。 ですので年+月+*のようにワイルドカードを使用したいのです。 ResultSet rs=sttSql.executeQuery("SELECT * FROM kintai WHERE id='" + u_id<<社員id>> + "' AND like date='" + gdate<<年+月>> + *"'); のように指定しているのですが、文法エラーが出てしまいます。 単純ミスかも知れませんがそれがわからなくて困っています。。 ちなみに社員idの指定後のSQL文("'AND~~*"')を抜けばコマンドは通ります。 よろしければご教示いただければと思います。 どうかよろしくお願いします。 下記に前後のソースを記載します。 <%@---------%> <!--html文--> <% String gdate=(request.getParameter("year"))+(request.getParameter ("month")); String u_id=session.getAttribute("id").toString(); Context ctx=new InitialContext(); DataSource ds=(DataSource)ctx.lookup("java:comp/env/jdbc/kintai"); Connection db=ds.getConnection(); Statement sttSql=db.createStatement(); ResultSet rs=sttSql.executeQuery("SELECT * FROM kintai WHERE id='" + u_id + "' AND like date='" + gdate + "'); while(rs.next()){ String strDate=rs.getString("date"); String strTbegin1=rs.getString("t_begin"); String strTend1=rs.getString("t_end"); String strRbegin1=rs.getString("r_begin"); String strRend1=rs.getString("r_end"); String strDay=strDate.substring(8,10); String strTbegin2=strTbegin1.substring(0,5); String strTend2=strTend1.substring(0,5); String strRbegin2=strRbegin1.substring(0,5); String strRend2=strRend1.substring(0,5);%> <tr> <td><%=strDay %>日</td> <td><%=strTbegin2 %></td> <td><%=strTend2 %></td> <td><%=strRbegin2 %></td> <td><%=strRend2 %></td> </tr> <!--後始末(close)--> <!--html文-->
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- sh_hirose
- ベストアンサー率66% (56/84)
- fortranxp
- ベストアンサー率26% (181/684)
- ProKaseifu
- ベストアンサー率51% (98/192)