• 締切済み

CDatabase::ExecuteSQL()について

CDatabase::ExecuteSQLで分からない事があります。 アドバイスを頂けますようよろしくお願い致します。 (質問内容) 以下の処理を実施するとエラーが発生する場合があります。 CDBExceptionのメンバー値は以下の通りです。 m_nRetCode=-1 m_strError=null m_strStateNativeOrigin=null エラー原因が全く分からないのですが、 エラー原因と、どうしたらエラーが発生しないか 対応方法を教えて頂けますでしょうか? try { CDatabase::ExecuteSQL(pszSQL); } catch(CDBException* pEx) { // エラー処理 return FALSE; } return TRUE; ※pszSQL="INSERT文"

みんなの回答

  • davidfox
  • ベストアンサー率58% (21/36)
回答No.3

似たような傷害が他のサイトにありました。 構文ミスでなければ製品開発元へ問い合わせた方が良いのでは...

参考URL:
http://forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=403259&SiteID=7
hanto123
質問者

補足

そのサイトは私が書きました。

全文を見る
すると、全ての回答が全文表示されます。
  • tsukachan
  • ベストアンサー率42% (202/470)
回答No.2

他のINSERT文が通るのであればDB接続は出来てますね。単純に通らないSQL文の構文ミスでしょう。

hanto123
質問者

補足

エラーとなるSQLで、 SQLPLUSからINSERTすると、 問題なく追加される事は確認できています。 なので、SQLの構文ミスではないと思います。

全文を見る
すると、全ての回答が全文表示されます。
  • tsukachan
  • ベストアンサー率42% (202/470)
回答No.1

エラー内容とpszSQLの内容が判らないと・・・・ あとDB接続は出来てるんですよね? DBの種類はなんですか? それによってSQLの構文変わってくる部分あると思いますが

hanto123
質問者

補足

エラー内容は表示されません。 SQLは以下の通りです。 INSERT INTO xxx.TEST_TBL(ID,RECEIVE_DT,FROM_NM,SUBJECT_NM,MAIL_HEADER,MAIL_CONT) VALUES('736400',to_date('2006/05/08 15:08:02','YYYY/MM/DD HH24:MI:SS'),'x@co.jp','更新メール','Return-Path: <x@co.jp> X-Original-To: x@co.jp Delivered-To: x3@co.jp Received: from can.co.jp (vscan2.co.jp [XXX.XXX.X.X]) by xxs (Postfix) with SMTP id XXXXXXXXX for <X@co.jp>; Mon, 8 May 2006 11:49:54 +0900 (JST) Received: from X.co.jp by vscan2.co.jp with ESMTP id XXXXX; Mon, 8 May 2006 11:49:54 +0900 (JST) Received: from w2wb4000.billing.co.jp by mail2.co.jp with ESMTP id XXXXX; Mon, 8 May 2006 11:49:53 +0900 (JST) Received: from XXXXX ([XX.XXX.X.XX]) by X.co.jp (8.11.7p2+Sun/) with ESMTP id XXXXX for <x@co.jp>; Mon, 8 May 2006 11:49:53 +0900 (JST) Date: Mon, 8 May 2006 11:49:53 +0900 (JST) Message-ID: <X.x.JavaMail.x@xxx> From: xx@co.jp To: x@eco.jp Subject: =?XXX=?= Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-2022-JP Content-Transfer-Encoding: 7bit X-UIDL: Gl*"!S#)"!]/*#!)]c"!','"@@@@@@=960503162457&ud=2006/05/08 11:49:51&XX=e&XX=001&XXX=on"') DB接続が出来ているか分かりません。 以下のSQLを流すと問題なくINSERTされます。 INSERT INTO xxx.TEST_TBL(ID,RECEIVE_DT,FROM_NM,SUBJECT_NM,MAIL_HEADER,MAIL_CONT) VALUES('736400',to_date('2006/05/08 15:08:02','YYYY/MM/DD HH24:MI:SS'),'x@co.jp','更新メール','Return-Path: <x@co.jp> X-Original-To: x@co.jp Delivered-To: x3@co.jp Received: from can.co.jp (vscan2.co.jp [XXX.XXX.X.X]) by xxs (Postfix) with SMTP id XXXXXXXXX for <X@co.jp>; Mon, 8 May 2006 11:49:54 +0900 (JST) Received: from X.co.jp by vscan2.co.jp with ESMTP id XXXXX; Mon, 8 May 2006 11:49:54 +0900 (JST) Received: from w2wb4000.billing.co.jp by mail2.co.jp with ESMTP id XXXXX; Mon, 8 May 2006 11:49:53 +0900 (JST) Received: from XXXXX ([XX.XXX.X.XX]) by X.co.jp (8.11.7p2+Sun/) with ESMTP id XXXXX for <x@co.jp>; Mon, 8 May 2006 11:49:53 +0900 (JST) Date: Mon, 8 May 2006 11:49:53 +0900 (JST) Message-ID: <X.x.JavaMail.x@xxx> From: xx@co.jp To: x@eco.jp Subject: =?XXX=?= Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-2022-JP Content-Transfer-Encoding: 7bit ','"@@@@@@=960503162457&ud=2006/05/08 11:49:51&XX=e&XX=001&XXX=on"')

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

関連するQ&A

  • Transact-SQLのBULK INSERTでエラーをキャッチしたい

    ・環境 WindowsXP Pro SQL Server2005 はじめまして。 Transact-SQLのBULK INSERTで、エラー(ファイルが存在しない等)が発生した場合に、専用の処理を行いたいと思っています。 ※BULK INSERTでエラーが発生したら、リターンコード100を返す等の処理を行いたいと思ってます 私の方で試したのは、BULK INSERTをBEGIN TRYでネストしエラーキャッチを行おうと思いましたがキャッチできず困っております。 以下、質問させてください。  ・BULK INSERTのエラーはエラーキャッチできないのか?できる場合その方法は?  ・エラーキャッチできない場合、他の方法でBULK INSERTエラー時の処理を行う方法はあるのか? お手数ですが、よろしくお願いします。

  • DBのコネクションのclose処理で例外が発生した場合

    DBのコネクションのclose処理で例外が発生した場合 DBアクセスが終わった後、finallyでResultSetやConnection、PreparedStatementのclose処理を行うと思います。 } finally { if (result != null) { try { result.close(); } catch (SQLException e) { } } if (ps != null) { try { ps.close(); } catch (SQLException e) { } } if (conn != null) { try { conn.close(); } catch (SQLException e) { } } } 上記では各close処理で例外が発生した場合、何もしていませんがこのあたりの処理は何を行うべきなのでしょうか。 例えばログ出力をして例外をそのまま上位にスローするなどでしょうか。 close処理で例外が発生するのは余程のことだと思うのですが、ログ出力以外で何かやるべき処理はありますでしょうか。

    • ベストアンサー
    • Java
  • phpの例外処理がエラーをトラップしてくれない。

    以下のように例外処理を記述しした場合、 try{ //ここでエラー } catch (Exception $e){ $ErrorMsg="その他エラー:".$e->getMessage(); } tryの中で、0除算によるエラーが発生してもエラーをトラップして、例外 処理のcatchに飛びません。 どのように記述すればエラーをトラップできるのでしょか?

    • ベストアンサー
    • PHP
  • SQLの重大度エラーがうまく検知できません

    お世話になっています。 WindowsXP(SP3)、SQL2005(SP3)、VB6.0(SP6)で開発を行っています。 今、データベースにINSERTするトリガを作成していますが、TRY-CATCHがうまくいきません。今現在のコードは、次のようになっています。 ---コードはじめ DECLARE @ERR VARCHAR (2000) DECLARE @STR VARCHAR (2000) DECLARE @res int begin try EXEC @res = sp_executesql N'INSERT INTO TEST (SEIYMD,ZENYYYYMM,STYMD,SIMEBI) VALUES (null,0,0,0)'     if @res<>0 begin     raiserror('テストエラー1',11,1) end end try BEGIN CATCH     raiserror('テストエラー2',11,1) END CATCH ---コード終わり ここで、TEST(SEIYMD,ZENYYYYMM,STYMD,SIMEBI)は、すべてnumeric型で、null型を認めていません。 調べたところ、これでCATCHステートメントへ飛ぶようになると思うのですが、うまくいきません。 この原因、対策等を知っていましたら、ご教授ください。お願いいたします。

  • try catch

    public String getMessage() { try { .... return "okay"; } catch (Exception e) { return "error"; } のように、エラーが起こったら catch 句で String を返すとうプログラムはありですか?

    • ベストアンサー
    • Java
  • javaサーブレットからのoracle接続エラー

    お世話になります。 javaサーブレットからoracleに接続する際、以下のエラーが発生して困っております。 エラー:java.sql.SQLRecoverableException: クローズされた接続です。 解決するための情報を頂けますでしょうか。 私がテストしている環境は、以下となります。 【Webサーバ】 centOS5.5. jdk1.6 tomcat5.5 【DBサーバ】 centOS5.5. oracle10g r2 jdbcドライバーは、ojdbc6.jarを使用しております。 サーブレット起動時にDB接続し処理完了時にDBクローズしていますが、DBクローズ処理にて 上記エラーが、発生してしまいます。 DB接続及びDBクローズは、以下のようにプログラミングしております。 /** * 概要 : DBアクセス * 処理 : DBアクセス */ public void dbAccess() throws Exception { conn = null; try { DriverManager.setLogWriter(new PrintWriter(System.out)); Class.forName(driver); conn = DriverManager.getConnection( jdbcPrefix + hotname + dbname, username,password); // 自動コミット・モードを設定(手動コミット) conn.setAutoCommit(false); }catch (SQLException e) { throw e; }catch (Exception e) { throw e; } } /** * 概要 : DBクローズ * 処理 : DBを閉じます。 */ public void dbClose() throws Exception { try { if (conn != null) conn.close(); }catch (Exception e) { throw e; } } お手数お掛け致しますが、ご教授宜しくお願い致します。

    • ベストアンサー
    • Java
  • JAVA 日付チェック方法 年・月・日 個別にする方法

    java カレンダーチェック 年チェック、月チェック、日チェックについて 年テキストボックス、月テキストボックス、日テキストボックスの3つがあります。 現在の処理方法としてyyyyとmmとddの間に「-」をつけ足してyyyy-mm-ddといった形でチェックメソッドを呼び出しています。 --メソッド内容-- public boolean isDate( String strDate ) throws Exception { try { if ( strDate == null || strDate.length() != 10) { throw new IllegalArgumentException( "引数の文字列["+ strDate +"]" + "は不正です。"); } String strDate2 = strDate.replace('-', '/'); //replace( 'before' , 'after' ) ; '-'が'/'になる DateFormat format = DateFormat.getDateInstance(); // 日付/時刻解析を厳密に行うかどうかを設定する。 format.setLenient( false ) ; format.parse( strDate2 ) ; return true; } catch ( IllegalArgumentException e ) {//引数に不正な値が渡された場合にキャッチする System.out.println("IllegalArgumentException e でcatch"); return false; } catch ( Exception e ) { System.out.println("Exception e でcatch"); return false; } }//END try --問題点-- 2009/13/12 や 2009/12/32 の場合等、 年でエラーなのか、月でエラーなのか、日でエラーなのか特定できない処理です。 年と月と日でどこでエラーが出ているのかわかる日付チェックはありますでしょうか? 尚範囲指定のif文は考えたのですが、2/29のチェック(うるう年)ができないため、あきらめました。 よろしくお願いします。

  • エラー発生時のプログラムの行番号の取得 VB2005

    エラー発生時にログを残すようにプログラムを書いているのですが。 Try  処理・・・ Catch  ログを書く処理 End Try エラーが発生した箇所の行番号は取得できないものでしょうか? アドバイスをいただけたら幸いです。 開発環境 VB2005 WinXP Pro

  • 例外処理(初回)についてのご質問

    プログラムを実行させた時、下記の様なメッセージが出力されたあとに、特定の場所でエラーが出てしまいます。 色々と試して見たのですが、解決出来ずに困っております。何方かどの辺を調べれば良いか等のアドバイスをお願い致します。 <エラーメッセージ> "例外処理 (初回) は XXXX.exe (MFC42D.DLL) にあります: 0xC0000005: Access Violation。" <停止場所> CWnd* CWnd::GetDlgItem(int nID) const { ここです→ASSERT(::IsWindow(m_hWnd)); if (m_pCtrlCont == NULL) return CWnd::FromHandle(::GetDlgItem(m_hWnd, nID)); else return m_pCtrlCont->GetDlgItem(nID); } <エラーが発生するプログラム> BOOL CComProgramDlg::BinarySend(BYTE SendData[], unsigned long SendLength) { int Ret; unsigned long Len; ここら辺です→CStatic* pStic1 = (CStatic*)GetDlgItem(IDC_MSG_STATIC); Ret = WriteFile(m_hComm, &SendData[0], SendLength, &Len, NULL); if(!Ret)  return(FALSE); if(SendLength > Len)  return(FALSE); pStic1 -> SetWindowText("データを送信しました。"); return(TRUE); } 上記はデータシリアル通信の送信用で10回程度、このメンバ関数を通した時に急に発生します。 よろしくお願いいたします。

  • どの例外でcatchすればいいのですか?

    例外の使い方を理解できていません。 さっき検索してみて下の質問と回答を見つけました。 例外処理がまったくわかりません!! http://www.okweb.ne.jp/kotaeru.php3?q=704380 この中の#2さんの回答、 >    catch (FileNotFoundException e){ ・・・ } >     catch (IOException e){ ・・・ } >   などと分けて書かなくとも、 >     catch (Exception e){ ・・・ } >   と書けば、すべての例外を処理できます。 を読むと「それなら、どんな例外でもすべて"(Exception e)"でcatchすればいいじゃん」と思うのですが駄目ですか? もし駄目ならどんな基準でExceptionを選んでいるのですか? 例えば、下のような二分検索木への挿入メソッドの場合、 どこでどのような例外を使ってcatchすればいいのですか? 私の思うような例外を入れてみましたが、どんなエラーが出るかも分からないし…。 だからと言ってthrow ~ catchを入れないとJBuilderが怒るんですよね…。 public void insert(int el) { IntBSTNode p = root, prev = null; try { while (p != null) { prev = p; if (p.key < el) p = p.right; else p = p.left; } if (root == null) root = new IntBSTNode(el); else if (prev.key < el) prev.right = new IntBSTNode(el); else prev.left = new IntBSTNode(el); } catch (Exception x) { System.out.println("エラーだ! 何か表示"); } } 分かる方、説明をお願いします。

    • ベストアンサー
    • Java
このQ&Aのポイント
  • 73歳の父からのモラハラにより、母は毎日怒鳴られたり罵倒され続けている。
  • 父が入院していた期間も母は父のために尽力し、病院への往復1時間の送迎や洗濯物の配達を行っていた。
  • 家族は父のモラハラにより精神的・身体的なダメージを受け、解決策を模索しているが困難を抱えている。
回答を見る

専門家に質問してみよう