次の方法で共有


OleDbException クラス

基になるプロバイダが OLE DB データ ソースに関する警告またはエラーを返したときにスローされる例外。このクラスは継承できません。

この型のすべてのメンバの一覧については、OleDbException メンバ を参照してください。

System.Object
   System.Exception
      System.SystemException
         System.Runtime.InteropServices.ExternalException
            System.Data.OleDb.OleDbException

<Serializable>
NotInheritable Public Class OleDbException   Inherits ExternalException
[C#]
[Serializable]
public sealed class OleDbException : ExternalException
[C++]
[Serializable]
public __gc __sealed class OleDbException : public   ExternalException
[JScript]
public
   Serializable
class OleDbException extends ExternalException

スレッドセーフ

この型の public static (Visual Basicでは Shared) のすべてのメンバは、マルチスレッド操作で安全に使用できます。インスタンスのメンバの場合は、スレッドセーフであるとは限りません。

解説

このクラスは、サーバーが生成したエラーを .NET Framework Data Provider for OLE DB が検出するたびに作成されます。クライアント側のエラーは、標準共通言語ランタイム例外としてスローされます。 OleDbException には、常に、 OleDbError のインスタンスが少なくとも 1 つ含まれています。

エラーの重大度レベルが非常に高い場合は、サーバーが OleDbConnection を閉じることがあります。ただし、ユーザーは接続を再び開いて、処理を継続できます。

使用例

[Visual Basic, C#, C++] データ ソースが見つからないために発生する OleDbException を生成し、その例外を表示する例を次に示します。

 
Public Sub ShowOleDbException()
    Dim mySelectQuery As String = "SELECT column1 FROM table1"
    Dim myConnection As New OleDbConnection _
       ("Provider=Microsoft.Jet.OLEDB.4.0;DataSource=")
    Dim myCommand As New OleDbCommand(mySelectQuery, myConnection)

    Try
        myCommand.Connection.Open()
    Catch e As OleDbException
        Dim errorMessages As String
        Dim i As Integer

        For i = 0 To e.Errors.Count - 1
            errorMessages += "Index #" & i.ToString() & ControlChars.Cr _
                           & "Message: " & e.Errors(i).Message & ControlChars.Cr _
                           & "NativeError: " & e.Errors(i).NativeError & ControlChars.Cr _
                           & "Source: " & e.Errors(i).Source & ControlChars.Cr _
                           & "SQLState: " & e.Errors(i).SQLState & ControlChars.Cr
        Next i

       Dim log As System.Diagnostics.EventLog = New System.Diagnostics.EventLog()
       log.Source = "My Application"
       log.WriteEntry(errorMessages)
       Console.WriteLine("An exception occurred. Please contact your system administrator.")
    End Try
End Sub

[C#] 
public void ShowOleDbException() 
{
   string mySelectQuery = "SELECT column1 FROM table1";
   OleDbConnection myConnection =
      new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;DataSource=");
   OleDbCommand myCommand = new OleDbCommand(mySelectQuery,myConnection);

   try 
   {
      myCommand.Connection.Open();
   }
   catch (OleDbException e) 
   {
     string errorMessages = "";

     for (int i=0; i < e.Errors.Count; i++)
     {
         errorMessages += "Index #" + i + "\n" +
                          "Message: " + e.Errors[i].Message + "\n" +
                          "NativeError: " + e.Errors[i].NativeError + "\n" +
                          "Source: " + e.Errors[i].Source + "\n" +
                          "SQLState: " + e.Errors[i].SQLState + "\n";
     }

     System.Diagnostics.EventLog log = new System.Diagnostics.EventLog();
     log.Source = "My Application";
     log.WriteEntry(errorMessages);
     Console.WriteLine("An exception occurred. Please contact your system administrator.");
   }
}

[C++] 
public:
 void ShowOleDbException() 
 {
    String* mySelectQuery = S"SELECT column1 FROM table1";
    OleDbConnection* myConnection =
       new OleDbConnection(S"Provider=Microsoft.Jet.OLEDB.4.0;DataSource=");
    OleDbCommand* myCommand = new OleDbCommand(mySelectQuery,myConnection);

    try 
    {
       myCommand->Connection->Open();
    }
    catch (OleDbException* e) 
    {
      String* errorMessages = S"";

      for (int i=0; i < e->Errors->Count; i++)
      {
         errorMessages = String::Concat(
            String::Format( S"{0}Index #{1}\nMessage: {2}\n",
               errorMessages,
               __box(i),
               e->Errors->Item[i]->Message ),
            String::Format( S"NativeError: {0}\nSource: {1}\nSQLState: {2}\n",
               __box(e->Errors->Item[i]->NativeError),
               e->Errors->Item[i]->Source,
               e->Errors->Item[i]->SQLState )
         );
      }

      System::Diagnostics::EventLog* log = new System::Diagnostics::EventLog();
      log->Source = S"My Application";
      log->WriteEntry(errorMessages);
      Console::WriteLine(S"An exception occurred. Please contact your system administrator.");
    }
 }

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

名前空間: System.Data.OleDb

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ

アセンブリ: System.Data (System.Data.dll 内)

参照

OleDbException メンバ | System.Data.OleDb 名前空間 | OleDbError | OleDbErrorCollection