• ベストアンサー

トランザクション処理がうまくいかない

ASPでトランザクションを行っています。 コネクションオブジェクトのErrors.Countプロパティでエラーの発生した数を知りたいのですが、データベースの更新をしたときに、入力規則に違反していてもエラーとしてカウントされないのです。なぜですか? もしかしてこのエラーはコネクションオブジェクトの管轄外なのでしょうか?

  • a999
  • お礼率71% (10/14)

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

  • ベストアンサー
  • kakusuke
  • ベストアンサー率36% (95/259)
回答No.1

ミドルウェアの種別は?ADO?oo4o? どちらにしろ、 更新時にコネクションではなく、 ミドルウェアのエラーが発生します。 コネクションのエラーではないので。

a999
質問者

お礼

わかりました。 ありがとうございました。

関連するQ&A

  • vb.net トランザクション処理について

    VB2005、SQLServer2005環境です。 VB.Netのトランザクション処理でエラーが発生します。 エラー内容の意味すらわかりません。 どなたかご教授お願いします。 *エラー内容 "System.InvalidOperationException: ExecuteReader は、コマンドに割り当てられた接続が保留状態である ローカルのトランザクションにあるとき、トランザクション オブジェクトを持つコマンドが必要です。 コマンドの Transaction プロパティがまだ初期化されていません。 Private Sub BTN_更新_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BTN_更新.Click Dim strsql As String Dim Tran As SqlClient.SqlTransaction = Nothing '---DB接続 Call DBConnect() Try '---SQL文作成 strsql = "SELECT * FROM Aテーブル" '---SQL文を作成して実行する Dim comm As SqlCommand = New SqlCommand(strsql, Con) '---データアダプタの作成 Dim dataadapter As SqlDataAdapter = New SqlDataAdapter(comm) '---データセットへの読み込み Dim ds As DataSet = New DataSet() dataadapter.Fill(ds, "Aテーブル") Dim dt As New DataTable dt = ds.Tables("Aテーブル") '---主キーの設定 dt.PrimaryKey = New DataColumn() {dt.Columns("Aテーブル")} '---データの更新 Dim targetRow As DataRow targetRow = dt.NewRow() targetRow = dt.Rows.Find(TXT_コード.Text) targetRow("コード") = TXT_コード.Text targetRow("氏名") = TXT_氏名.Text '---コマンド自動作成 Dim cb As SqlCommandBuilder = New SqlCommandBuilder(dataadapter) '---トランザクション開始 Tran = Con.BeginTransaction() '---データベースの更新 dataadapter.Update(ds, "社員テーブル")     <<<エラーになります。 '---トランザクション完了 Tran.Commit() Catch oExcept As Exception '---ロールバック Tran.Rollback() '例外が発生した時の処理 MessageBox.Show(oExcept.ToString, "例外発生") Finally '---DB切断 Call Disconnect() End Try

  • 一つのトランザクションでSELECTとUPDATEできますか? (ADO.NET)

    いつもお世話になっております。 ADO.NETの話なのですが、トランザクションを開始したコネクションオブジェクトで DataAdapterを使ったSELECTと、ExecuteNonQueryを使ったUPDATEを交互に繰り返し 行うことはできるでしょうか? 現状できていないので可能なのであれば共通関数の見直しが必要かと思っています。 いまはSELECTとUPDATEを別のコネクションで行っているのですが、UPDATE後に 同じテーブルの該当レコードをSELECTにいくため、デッドロックが発生しています。

  • ADO接続のトランザクション処理

    SQL2005のDBに対して ADOのconnectionオブジェクトで接続しているのですが、 下記のようにトランザクションを開始し、SQLを実行し、 エラーが発生してロールバックを行っていない場合、 2個目のSQLがいつまでたってもロック状態でタイムアウトになりません。 このような場合、ADOconnectionのコマンドタイムアウトのデフォルト値30秒で タイムアウトとなり、ロールバックされないのでしょうか? 以下adoコネクションオブジェクトをConnobjと表記します Connobj.BeginTrans Connobj.Execute "Insert into AAA・・・・" ← このInsert文で失敗 Connobj.Execute "Update BBB SET ・・・・" ← このUpdateは成功 ※ロールバックもコミットも行わない  (プログラムの不具合でロールバックができなかった場合や、  アプリで異常が発生してロールバックが行えない等) お手数をおかけしますが、何かご存知の方、ご教授願います。

  • ASPでトランザクションをかけるとエラーする「ファイアーホースモード」

    ASPでSQLserverに接続し、レコードの更新をかける際に、 BeginTrans---CommitTrans と記述すると、 「ファイアーホースモードの場合はトランザクションがかけられない」という 主旨のエラーが出ます。 このファイル内でトランザクションをかけている場面はここのみです。 (複数書いていてCursorTypeを設定しないとエラーするのは既に 解決済みです。) そもそも、「ファイアーホースモード」とはどんなモードなのでしょうか?

  • エラーについて(更新)

    Txtファイルには 1,A ~ 10,A のデータが入ってます。 データベースはmysqlで mysqlにはフィールドは ID NAMEで 1  1 ~ 9  1 のデータ9つが入ってます。 Txtファイルの10番目のデータを更新させると データベースにそれに対応したコードがないため エラーが出るはずなのですが、 エラーの形が次のようになります。 データが登録されました。データが登録されました。アクティブなトランザクションがありません。 アクティブなトランザクションがありません。 アクティブなトランザクションがありません。 アクティブなトランザクションがありません。 アクティブなトランザクションがありません。 アクティブなトランザクションがありません。 アクティブなトランザクションがありません。 アクティブなトランザクションがありません 何故なのでしょうか? 自分ではtxtファイルの10番目のデータを更新するときにだけエラーがでると考えているのですがそのように 動作してくれません。何故そのように動作しないのでしょうか?また、エラーがでているにもかかわらず 更新処理は全て正常に動作しています。 コードについても載せたいのですが 文字数制限で載せることができませんので 回答していただいた後に、補足で載せさせて頂きたい と思います。

  • SQL Server + VB の開発において

    こんにちは。 SQL Server + VB で開発をしているのですが、下記のソースの ★の部分でエラーが発生するのですが、回避策がわからなくて 困っています。(T T) 'udlパス名 strPath = パス 'コネクション 設定 objCnn.ConnectionString = strPath objCnn.Open 'トランザクション開始 objCnn.BeginTrans 'SQL作成(列名分 データを設定) strSql = "Insert Into User.TableName Values ('2004','02','18')" 'SQL実行★ objCnn.Execute strSql 'エラー判定 If objCnn.Errors.Count > 0 Then objCnn.RollbackTrans Else objCnn.CommitTrans End If エラーNo.:-2147467259 エラーメッセージ:手動または分散トランザクション モードのため、新規接続を作成できません。 別のアプリでSQLは実行できたので、SQLの文法エラーというのは考えにくいので、VBでの操作の仕方が 問題だとは思うのですが、分かる方お願いいたします。m(_ _)m

  • ASP By Cookie を JavaScript で見たい

    ASP で以下のように書き込んだクッキーを、JavaScript で見るにはどうしたらいいのでしょうか。 Response.Cookies(\"count\") = nCount 本にならって、 SConunt = getCookie(\"count\"); とやっても取得されないばかりか、 「オブジェクトを指定してください。」というエラーが 返ってきてしまいます。 ちなみに、ASPで、Request.Cookies(\"count\") とやると ちゃんと中身が見えます。 どうかよろしくお願いします。

  • 復元ポイント作成時のエラー

    復元ポイントを作成しようとすると下記の様なエラーが出ます。 ======================== ランタイムエラーが発生しました。 デバックしますか> 行68 エラー:オブジェクトでサポートされていないプロパティまたはメッソッドです。 ======================= 「はい」を選択しデバックを試みると ====================== Microsoft JScript実行時エラー:オブジェクトでサポートされていないプロパティまたはメッソッドです。 ====================== と出ます。ちなみにその時に黄色い矢印の所を確認すると 「 var rpi = ObjSystemRestore( ObjSystemRestore.Count-1 ); var date = rpi.TimeStamp( 0 );」 と出ています。 色々調べたんですが分からないので宜しくお願いします。

  • ASP上のVB SCRIPT記述(result setからcountを取得する方法)

    初心者です。 ASP上のVB SCRIPT記述(result setからcountを取得する方法)が分かりません。 Set rsRet = MyConn.Execute(strSql) nCltCnt = 0 If Not rsRet Is Nothing Then nCltCnt = rsRet.Count End If という記述をしたのですが、エラーになります。メッセージは以下の通りです。 ●エラー タイプ Microsoft VBScript 実行時エラー (0x800A01B6) オブジェクトでサポートされていないプロパティまたはメソッドです。: 'Count' xxx.asp, line 110 サポートされていないのであれば、result setからの件数の取得を教えて下さい。 どなたかアドバイス宜しく願います。

  • asp+dllでのcommitの有効範囲

    aspでトランザクション(BeginTrans、CommitTrans)を定義し、 そのトランザクション内でDB更新機能を持ったdllを使用したとします。 この時、dllでDB更新エラー時DBに対しロールバッグはかけることは可能 でしょうか  asp  BeginTrans  dllを呼ぶ  dllが不正終了時、aspを終了する  CommitTrans  dll   DBを更新(DLL内ではbegintran、committranはしない) もちろんDLLはサーバー内で動かします。 DBはsql server、DLLはvb6.0で作成します。 どうかお力添えを、、、