- PR -

Accessへのupdateについて

投稿者投稿内容
ぴろ
常連さん
会議室デビュー日: 2002/12/12
投稿数: 26
投稿日時: 2003-01-06 13:17
返信、ありがとうございます。
シングルクォーテーションを#に変更してやってみましたが、うまくいきませんでした。。
以下、変更後の記述文です。

String sql = "update FileList set " + "num='" + num + "', " + "filename='" + filename + "', " + "date=#" + date + "#" + " where num ='" + num + "'";
ぴろ
常連さん
会議室デビュー日: 2002/12/12
投稿数: 26
投稿日時: 2003-01-06 14:13
>H2さん
あけましておめでとうございます。
せっかくご返信いただいていたのに、気づきませんでした。。。ごめんなさい。。
最後の ; 、試してみましたがだめでした。
先ほどから、みなさんのおっしゃっているsqlのプリントアウトというのは
具体的にはどうやってやるものなのですか?すみません、初歩的に質問で。。。
H2
ぬし
会議室デビュー日: 2001/09/06
投稿数: 586
お住まい・勤務地: 港
投稿日時: 2003-01-06 14:18
おおっ、分かりました。dateはキーワードなので[]でくくる必要があります。多分;も必要です。

これでどうでしょう?

String sql = "update FileList set " + "num='" + num + "', " + "filename='" + filename + "', " + "[date]='" + date + "' where num ='" + num + "';";

プリントアウトは
System.err.println(sql);
とか
System.out.println(sql);
でよいかと。
ぴろ
常連さん
会議室デビュー日: 2002/12/12
投稿数: 26
投稿日時: 2003-01-06 14:36
>H2さん
エラー内容が変わりました!!内容は以下のとおりです。

【エラー内容】
抽出条件でデータ型が一致しません。

sqlのプリントアウトに関しまして、System.outを使ってるのですが、いかんせんJSPの表示でエラーがでてしまうため、表示するにはどうやったらいいのかなと思っております。
質問ばかりですみません。。。よろしくお願いします。
まりり
ぬし
会議室デビュー日: 2001/12/05
投稿数: 329
投稿日時: 2003-01-06 16:37
System.outへの出力はコンテナのログにのってないでしょうか?
Tomcat4.xだったらcatalina.outとかなんですけど。

それが見れなければ、自分でFile I/O書いて指定したファイルに出力するとか。
ぴろ
常連さん
会議室デビュー日: 2002/12/12
投稿数: 26
投稿日時: 2003-01-06 16:48
>まりりさん
ありがとうございます。このエラーはtomcatのエラー画面でみていたものと同じモノでした。。。ごめんなさい。以下、内容です。
【内容】
2003-01-06 16:42:51 StandardWrapperValve[jsp]: サーブレット jsp のServlet.service()が例外を投げました
javax.servlet.ServletException: [Microsoft][ODBC Microsoft Access Driver] 抽出条件でデータ型が一致しません。
at org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:463)
at org.apache.jsp.update$jsp._jspService(update$jsp.java:129)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:107)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.jasper.servlet.JspServlet$JspServletWrapper.service(JspServlet.java:202)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:382)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:474)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:243)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:190)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
at org.apache.catalina.valves.CertificatesValve.invoke(CertificatesValve.java:246)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2343)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:170)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:468)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at org.apache.ajp.tomcat4.Ajp13Processor.process(Ajp13Processor.java:429)
at org.apache.ajp.tomcat4.Ajp13Processor.run(Ajp13Processor.java:495)
at java.lang.Thread.run(Thread.java:536)
H2
ぬし
会議室デビュー日: 2001/09/06
投稿数: 586
お住まい・勤務地: 港
投稿日時: 2003-01-07 11:01
> 抽出条件でデータ型が一致しません。
これは型が違うものをデータベースに入れようとしているからですね。numが本当に数字型か、dateが日付型になっているのかを確認してください。

それからsqlのプリントの仕方ですが、try...catch文でエラーをキャッチして、変数にメッセージを入れてJSP内で表示すれば良いと思います。サンプルです。適宜修正して使ってください。(ちゃんと調べて書いてないのでちゃんと書き直してくださいね)本当はデバッガとかを使った方がいいのですけどね。
コード:

<%@ page contentType="text/html; charset=Shift_JIS" %>
<%
...ごにょごにょ...

connection = DriverManager.getConnection(url, user, password);
statement = connection.createStatement();

String sql = "update FileList set "
+ "num='" + num + "', "
+ "filename='" + filename + "', "
+ "[date]='" + date
+ "' where num ='"
+ num + "';";

String errorMessage = "";
try {
statement.execute(sql);
...ごにょごにょ...
} catch(SQLException ex) {
errorMessage = "SQL=" + sql + " " + ex.getMessage();
}


...ごにょごにょ...

%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<TITLE>データベースへのアクセス</title>
</head>
<BODY>
...ごにょごにょ...

<P>エラーメッセージ 『<%= errorMessage %>』
</body>
</html>



[ メッセージ編集済み 編集者: H2 編集日時 2003-01-07 11:03 ]

スキルアップ/キャリアアップ(JOB@IT)