• ベストアンサー

【ServletでのUPDATEができません。】

こんにちは。 現在、SQLServerのテーブルをServletにて更新しているのですがSQLが実行されても更新されていません。 何かSQLSeverで設定がいるのでしょうか? SQLは("UPDATE T_Strfer SET フラグ ='1' WHERE id="+Str);となります。SQLは確実に実行されています。 尚、SQLServerでフラグはテキスト型のフィールドサイズ1となっています。 ご教授宜しくお願い致します。

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

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

確実に実行されているとは、どのように確認しましたか。 ManagementStudioでテーブルを開いて見たのでしょうか。 WHEREの条件を満たすデータがないのでは、ないですか?

earlgyreprince
質問者

お礼

すみません。 UpdateではなくInsertに変更になったのでまた新しく 質問させて頂きます。 ありがとうございました☆

earlgyreprince
質問者

補足

ありがとうございます。 SQLの記述の下にout.println("データを更新しました!<br>");と記述しているので実行されたのかと思っていました。 ManagementStudioというのは分かりかねますが、このWebで何度か同じ条件の検索をしていますおでWHEREの条件を満たすデータはあると思います。 宜しくお願いします。

関連するQ&A

  • updateしてもSQLを終了すると元に戻る

    Oracle_9→access2002 で外注開発されたシステムを利用しています さて、Oracle、SQL_Plusの[update TABLE1 SET FIELD1 = 'X' WHERE FIELD1 IS NULL]等でデータ更新後、[select 列名リスト FROM TABLE1 WHERE 検索条件]で確認すると確かに更新されているが、SQLを終了後、再起動すると元に戻ってしまいますが、どんな原因が考えられますか?update実行後に確定操作等あるのですか? Oracleはまったく初心者ですがお願いします

  • ACCESS VBAのDSUMを使ってUPDATE

    よろしくお願いします。 通貨型のACCESSデータベースのレコードにDSUMを使ったUPDATE文で更新をしたいのですが、 うまくいきません。 イミディエイトウィンドウで出力したSQLをACCESSのクエリーで実行したところ、 "1個のフィールドで型変換エラー"となります。 実行したSQLは下記のようなものです。 UPDATE テーブル名 SET フィールド名 = DSUM(フィールド名,"テーブル名",コードI = '0000' AND コードII BETWEEN '5110' AND '5410') WHERE コードI = '0000' AND コードII = '5980'; 因みに、更新元テーブルと更新先テーブルは同じテーブルです。 行いたいのは、コードII列の「5110」~「5410」の合計値を、「5980」の場所にUPDATEを させようとしてます。 よろしくお願いします。

  • ACCESSでのUPDATEコマンド

    現在ASPとACCESSを使用して、開発を行っています。 ORACLEでの開発経験はあるのですが、SQLServerやACCESSでの経験がなく微妙にことなるSQLに困惑しています。 ORACLEではUPDATE時に他のテーブルからデータを参照して更新できると思いますがACCESSで同じようなことはできるのでしょうか?実行したいのはORACLEでいう、以下のようなSQLです。 SQLを2回に分けて実行すれば同じことはできるのですが・・・。 UPDATE TAB_A SET (A,B) = (SELECT A1,B1 FROM TAB_B WHERE C1='10') WHERE C = '10'; 宜しくお願いします。

  • 1テーブル&複数レコードの更新に対して1度のupdate文での処理方法

    1テーブル&複数レコードの更新に対して1度のupdate文での処理方法 Delphi2010+SQL SERVER 2005で開発しています。 update文で、 現在下のようにwhileで複数レコードに対して、 1回、1回、sqlを発行して、更新しています。 これを、一度のSQLの発行で処理できないものでしょうか? 更新テーブルは1つで、更新する項目も同じです。 更新するデータと、where句の条件が異なります。 もし可能なようでしたら、どうかご教授お願いします。 update table set A=1,B=2 where id=1 update table set A=2,B=3 where id=5 update table set A=9,B=99 where id=7 update table set A=5,B=10 where id=15 update table set A=1,B=10 where id=75

  • 【Servletのエラーについて教えて下さい!】

    こんにちわ。いつもありがとうございます。 サーブレットをコンパイル後、実行するとHTTPのPOSTメソッドは、このURLではサポートされていません。 と表示されます。 前のJSPからはmethod="POST"にて送信しているのですが・・・ すみませんが、ご教授下さい! ソースは以下となります。 よろしくお願い致します! import javax.servlet.http.*; import java.sql.*; import java.io.*; public class EditingServlet extends HttpServlet { public void doPost(HttpServletRequest req, HttpServletResponse res) throws IOException { /*フィールドの宣言*/ Connection conn = null; res.setContentType("text/html; charset=Shift_JIS"); PrintWriter out = res.getWriter(); out.println("<html><head></head><body>"); String Str = req.getParameter( "Str" ); try { String user = "ID", pwd="PW"; Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); String url="jdbc:sqlserver://10.121.67.247:1433;DatabaseName=Name"; /*JDBC URL*/ conn = DriverManager.getConnection(url,user,pwd); Statement stmt = conn.createStatement(); stmt.executeUpdate("UPDATE T_Strfer SET フラグ ='1' WHERE id='"+ Str +"'"); out.println("データを更新しました!<br>"); } catch (ClassNotFoundException e) { out.println("クラスが見つかりません。"); } catch (SQLException e) { out.println("データの更新に失敗しました。 "); } finally { try { if (conn != null) { conn.close(); } } catch (SQLException e) {} } out.println("</body></html>"); out.close(); } }

    • ベストアンサー
    • Java
  • UPDATEを高速化したい

    MySQLバージョン4.1.16を使用しています。 複数の行をそれぞれの決まった値で更新したいのですが、 下のような記述の仕方だと更新する行が増えるにつれ、 それ相応に遅くなってしまいます(かといって他の記述の仕方を知りませんが・・・) なにかもっと高速になるような記述というのはあるのでしょうか? SET AUTOCOMMIT=0; START TRANSACTION; UPDATE tbl SET field = 'a' WHERE id = '1'; UPDATE tbl SET field = 'b' WHERE id = '2'; UPDATE tbl SET field = 'c' WHERE id = '3'; COMMIT; SET AUTOCOMMIT=1;

  • UPDATE文で発生するデッドロックについて、教えてください。

    はじめまして。 SQL SERVER初心者の為、ご指導の程お願いいたします。 UPDATE文で発生するデッドロックについて教えてください。 現在、ストアドプロシージャ内で、 以下のUPDATE文を使用しています。 UPDATE テーブルA SET 更新済フラグ = '1' WHERE ロック時間 =パラメータ.ロック時間 AND ロックユーザー = パラメータ.ロックユーザー AND ID = パラメータ.ID ※Where句に使用する、ロック時間・ロックユーザー・IDは、  キー項目では無く、インデックスも使用しておりません。  ただし、対象データを一意に識別できる項目ではあります。   このストアドを含む処理を、ほぼ同時実行すると このUPDATE文で「LOCK TIMEOUT」が発生し、 デッドロックとなってしまいます。 UPDATEの対象となるデータ件数は、ともに500~600件です また、対策としましてロックのヒント文を下記のように設定し、 WHERE句に設定している、ロック時間・ロックユーザー・IDに 対して、インデックスを作成してみましたが、 同様に、デッドロックが発生してしまいます。 UPDATE テーブルA (with rowlock) SET 更新済フラグ = '1' WHERE ロック時間 = パラメータ.ロック時間 AND ロックユーザー = パラメータ.ロックユーザー AND ID = パラメータ.ID SQL Serverに詳しい方、お力になっていただければ、光栄です。 よろしくお願いいたします。

  • SQLServerでのSQL文に関して(Accessより)

    SQLServer2005とAccess2000で改修をしています。 共にADO接続をしています。 下記のように単純にUPDATEしているSQLがあるのですがエラーとなります。 フラグAはAccess側から見るとYes/No型 SQLServer2005から見るとビット型です。 (DB.Excute (UPDATE tblテーブル名 SET フラグA = Yes WHERE ID = 1)) エラーはメッセージが出るわけではなく、更新が決定されないというか… デバック自体は何も言われず通るのですが 当処理記述のMDBを閉じた後、下記SQLにてリスト表示させると SELECT IIF(フラグA = NO, '','済') FROM tblテーブル名 WHERE フラグA = NO とすると'済'とは表示されないID=1のレコードが抽出されます。 Access側からリンクテーブルを開き 当レコードのフラグAを手で変更しようとすると 「データの競合」メッセージが表示され「レコードの保存」ボタンの押下は不可です。 見えるレコード値は「0」です。 結局試行錯誤の結果 UPDATE tblテーブル名 SET フラグA = -1 WHERE ID = 1 とすることでSELECT結果は正常となったのですが 原因と、解決方法が適切かがわかりません。 改修中のプログラムは、Yes/No、True/False、-1/0の記述が混在していて 今までYes/No型やビット型、Accessを使ったことがないのでさっぱりです。。 ちなみに現システム使用環境はSQLServer2000とAccess2000/2003です。 普通に動いているようなので、勝手に既存SQLを変えてもいいものか、 むしろSQLServerのバージョンを変えることで変えなければならないのか 判断できたらいいなと思っています。 すいませんが、よろしくお願いいたします。

  • update文の一括発行

    お世話になります。 parent_idという親テーブルのIDを格納するフィールドと idという自分のIDを格納するフィールドと データを格納するdataというフィールドがあるtbl01というテーブルがある場合に update tbl01 set data = 'xxx' where parent_id = 1 and id = 1 update tbl01 set data = 'yyy' where parent_id = 1 and id = 2 update tbl01 set data = 'xyz' where parent_id = 1 and id = 3 ※dataに格納するデータは親テーブルとは関係ない独立したデータです。 という感じにparent_id = 1が格納されているレコードにデータを次々と更新していきたいのですが 1回のupdate文でまとめて発行するやり方はあるのでしょうか。 1回1回発行するのは時間がかかるためできれば1回でまとめて発行したいのです。 update tbl01 set data in ('xxx', 'yyy', 'xyz') where parent_id = 1 and id in(1, 2, 3) イメージとしてはこんな感じです。 よろしくお願いいたします。

    • ベストアンサー
    • MySQL
  • Mysql UPDATE出来ません

    PHP+MySQLでホームページ開発中ですが、MySQLで特定idのフィールドの更新処理(UPDATE)が出来ません。初心者です宜しくお願いします。 【Mysqlで確認した点】 (1)XAMPP・MyAdminからは以下のSQL文で問題なく更新できる。 "UPDATE upload_list SET rem='ABCDEF' WHERE id=15;" 【問題は?】 以下のphpからは更新できません。 【phpで確認した点は?】 (1)DBへ正常に接続してる。 (2)文字コードも正常にSETしてる。 (3)UPDATE実行後の$RESULT(返り値)がない。 (4)PHPを実行後、MyAdminでDBを確認しても更新されていない。 【phpコード】 <?php //データベースパラメータ定義 $DBSERVER="localhost"; $DBUSER="root"; $DBPASSWORD=""; $DBNAME="up_load"; $DATANAME="upload_list"; //Mysqlに接続 if(mysql_connect($DBSERVER,$DBUSER,$DBPASSWORD)) {echo "DB接続済/";} else {echo "<h2>データベースに接続できません</h2>";die();} //Mysql停止 //データベースを選定 mysql_select_db($DBNAME); //Mysqlの文字セットを定義 $sql = "SET NAMES ujis;"; $result = mysql_query($sql); if ($result==true){echo "文字コードSET済/";} //更新id、rem(更新記事)をSET $id=15; $new_rem="ABCDEF"; echo $DATANAME."/".$id."/".$new_rem."/"; //Mysql更新処理 $result=mysql_query('UPDATE $DATANAME SET rem=$new_rem WHERE id=$id;'); if ($result==true){echo "更新!";} else {echo "更新出来ず";} //XAMMP phpMyAdminからは以下のSQL文で更新できた。 //UPDATE upload_list SET rem='ABCDEF' WHERE id=15; ?> 【実行後のブラウザ表示】 DB接続済/文字コードSET済/upload_list/15/ABCDEF/更新出来ず

    • ベストアンサー
    • MySQL