C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[1]: データベース取得で例外発生


(過去ログ 99 を表示中)

[トピック内 9 記事 (1 - 9 表示)]  << 0 >>

■59187 / inTopicNo.1)  データベース取得で例外発生
  
□投稿者/ あるしす (1回)-(2011/05/18(Wed) 14:29:53)

分類:[C#] 

はじめまして!C#の初心者です。

C#でデータベースの取得をしようとした所、訳の分からない例外が発生して困っています。
どなたか解かる方、解決方法を教えてください。

開発環境は、WindowsXP、Visual studio2008(SP1)です。
発生している例外は TypeInitializationException で、例外ヘルパの説明は
'System.Transactions.Diagnostics.DiagnosticTrace' のタイプ初期化子が例外をスローしました。
と表示されます。

発生箇所は、以下に記述するソースのmyDataAdapter.Fill()の部分です。
但し、myDataAdapter.Fill()にブレークポイントを設定し、一旦ブレークした後に続行すると例外は発生しません。


■ソース
using System;
using System.Data;
using System.Data.OleDb;
using System.Xml.Serialization;

public class MainClass
{
  public static void Main ()
  {
    string strAccessConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=RoraData.mdb";
    string strAccessSelect = "SELECT * FROM RoraType";
    DataSet myDataSet = new DataSet();

    OleDbConnection myAccessConn = null;
    try
    {
      myAccessConn = new System.Data.OleDb.OleDbConnection(strAccessConn);
    }
    catch(Exception ex)
    {
      Console.WriteLine("Error: Failed to create a database connection. \n{0}", ex.Message);
      return;
    }

    try
    {
      OleDbCommand myAccessCommand = new System.Data.OleDb.OleDbCommand(strAccessSelect, myAccessConn);
      OleDbDataAdapter myDataAdapter = new System.Data.OleDb.OleDbDataAdapter(myAccessCommand);
      myDataAdapter.Fill(myDataSet,"RoraType");
    }
    catch (Exception ex)
    {
      Console.WriteLine("Error: Failed to retrieve the required data from the DataBase.\n{0}", ex.Message);
      return;
    }

//    ★★ 以下省略 ★★
  }
}

以上、よろしくお願いします。
引用返信 編集キー/
■59188 / inTopicNo.2)  Re[1]: データベース取得で例外発生
□投稿者/ Gyackt (1回)-(2011/05/18(Wed) 14:57:39)
No59187 (あるしす さん) に返信
> はじめまして!C#の初心者です。
>
> C#でデータベースの取得をしようとした所、訳の分からない例外が発生して困っています。
> どなたか解かる方、解決方法を教えてください。
>
> 開発環境は、WindowsXP、Visual studio2008(SP1)です。
> 発生している例外は TypeInitializationException で、例外ヘルパの説明は
> 'System.Transactions.Diagnostics.DiagnosticTrace' のタイプ初期化子が例外をスローしました。
> と表示されます。
>
> 発生箇所は、以下に記述するソースのmyDataAdapter.Fill()の部分です。
> 但し、myDataAdapter.Fill()にブレークポイントを設定し、一旦ブレークした後に続行すると例外は発生しません。
>
>
> ■ソース
> using System;
> using System.Data;
> using System.Data.OleDb;
> using System.Xml.Serialization;
>
> public class MainClass
> {
>   public static void Main ()
>   {
>     string strAccessConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=RoraData.mdb";
>     string strAccessSelect = "SELECT * FROM RoraType";
>     DataSet myDataSet = new DataSet();
>
>     OleDbConnection myAccessConn = null;
>     try
>     {
>       myAccessConn = new System.Data.OleDb.OleDbConnection(strAccessConn);
>     }
>     catch(Exception ex)
>     {
>       Console.WriteLine("Error: Failed to create a database connection. \n{0}", ex.Message);
>       return;
>     }
>
>     try
>     {
>       OleDbCommand myAccessCommand = new System.Data.OleDb.OleDbCommand(strAccessSelect, myAccessConn);
>       OleDbDataAdapter myDataAdapter = new System.Data.OleDb.OleDbDataAdapter(myAccessCommand);
>       myDataAdapter.Fill(myDataSet,"RoraType");
>     }
>     catch (Exception ex)
>     {
>       Console.WriteLine("Error: Failed to retrieve the required data from the DataBase.\n{0}", ex.Message);
>       return;
>     }
>
> //    ★★ 以下省略 ★★
>   }
> }
>
> 以上、よろしくお願いします。

調査不足じゃないかな
http://www.connectionstrings.com/access

あと「データベースを取得」っておかしい
引用返信 編集キー/
■59189 / inTopicNo.3)  Re[1]: データベース取得で例外発生
□投稿者/ ツマツサツδ・email (2回)-(2011/05/18(Wed) 14:57:48)
http://msdn.microsoft.com/ja-jp/library/aa288452%28v=vs.71%29.aspx
ここを参考に作成したのだと思います。

>但し、myDataAdapter.Fill()にブレークポイントを設定し、一旦ブレークした後に続行すると例外は発生しません。
→ウォッチをみて、myDataSetにレコードは取得できてますか?

ぱっと見て、怪しいのは
>string strAccessConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=RoraData.mdb"
ここですね。Data Sourceのところ。
引用返信 編集キー/
■59210 / inTopicNo.4)  Re[2]: データベース取得で例外発生
□投稿者/ あるしす (2回)-(2011/05/19(Thu) 11:34:34)
No59188 (Gyackt さん) に返信

> 調査不足じゃないかな
> http://www.connectionstrings.com/access

Gyackt さん
早々とご回答ありがとうございます。

教えて頂いたサイトを参考にしてConnection Stringを様々試してみましたが、結果は変わりませんでした。
また、Connection Stringに問題がある場合、myDataAdapter.Fill()で一旦ブレークさせると現象が発生しないのが理解できません。

もし、ご指摘がConnection String以外であれば、もう少し具体的に教えて頂けないでしょうか?
よろしくお願いします。

引用返信 編集キー/
■59212 / inTopicNo.5)  Re[2]: データベース取得で例外発生
□投稿者/ あるしす (3回)-(2011/05/19(Thu) 11:48:09)
No59189 (ツマツサツδ・email さん) に返信

ツマツサツδ・email さん。ご回答ありがとうございます。

> http://msdn.microsoft.com/ja-jp/library/aa288452%28v=vs.71%29.aspx
> ここを参考に作成したのだと思います。

はい。そうです。

> >但し、myDataAdapter.Fill()にブレークポイントを設定し、一旦ブレークした後に続行すると例外は発生しません。
> →ウォッチをみて、myDataSetにレコードは取得できてますか?

例外が発生した時にはmyDataSetにはレコード取得が出来ていません。
但し、myDataAdapter.Fill()で一旦ブレークした後に続行すると、例外発生せずにmyDataSetにレコード取得はできます。


>
> ぱっと見て、怪しいのは
> >string strAccessConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=RoraData.mdb"
> ここですね。Data Sourceのところ。

Data Sourceの指定を絶対パスで指定して試しましたが、結果は同じでした。
また、Data Source指定に誤りがあった場合には、OleDbException例外が発生するのではないでしょうか?

引用返信 編集キー/
■59219 / inTopicNo.6)  Re[1]: データベース取得で例外発生
□投稿者/ くり太郎 (23回)-(2011/05/19(Thu) 13:39:22)
くり太郎 さんの Web サイト
No59187 (あるしす さん) に返信
> はじめまして!C#の初心者です。
>
> C#でデータベースの取得をしようとした所、訳の分からない例外が発生して困っています。
> どなたか解かる方、解決方法を教えてください。
>
> 開発環境は、WindowsXP、Visual studio2008(SP1)です。
> 発生している例外は TypeInitializationException で、例外ヘルパの説明は
> 'System.Transactions.Diagnostics.DiagnosticTrace' のタイプ初期化子が例外をスローしました。
> と表示されます。
>
> 発生箇所は、以下に記述するソースのmyDataAdapter.Fill()の部分です。
> 但し、myDataAdapter.Fill()にブレークポイントを設定し、一旦ブレークした後に続行すると例外は発生しません。

試しに

myDataAdapter.Fill(myDataSet,"RoraType");

のところなんですけど、データを受け取る側のオブジェクトのタイプを DataSet ではなく DataTable 系のものにしても同じ結果になりますか?
引用返信 編集キー/
■59232 / inTopicNo.7)  Re[2]: データベース取得で例外発生
□投稿者/ あるしす (4回)-(2011/05/19(Thu) 16:27:22)
No59219 (くり太郎 さん) に返信

くり太郎さん、ありがとうございます。

> 試しに
>
> myDataAdapter.Fill(myDataSet,"RoraType");
>
> のところなんですけど、データを受け取る側のオブジェクトのタイプを DataSet ではなく DataTable 系のものにしても同じ結果になりますか?

受け取るオブジェクトをDataTableで試してみましたが、同じ例外が発生しました。
因みに、変更した箇所は
    try
    {
      OleDbCommand myAccessCommand = new System.Data.OleDb.OleDbCommand(strAccessSelect, myAccessConn);
      OleDbDataAdapter myDataAdapter = new System.Data.OleDb.OleDbDataAdapter(myAccessCommand);
//      myDataAdapter.Fill(myDataSet,"RoraType");
      DataTable dbTbl = new DataTable();
      myDataAdpter.Fill(dbTbl);
    }
    catch (Exception ex)
    {
      Console.WriteLine("Error: Failed to retrieve the required data from the DataBase.\n{0}", ex.Message);
      return;
    }
としました。

それと、myDataAdpter.Fill()の箇所をmyAccessConn.Open()に変えて見ましたが、やはり結果は同じでした。
データを受け取る側の問題では無い様な気がします。



引用返信 編集キー/
■59233 / inTopicNo.8)  Re[1]: データベース取得で例外発生
□投稿者/ 魔界の仮面弁士 (2174回)-(2011/05/19(Thu) 16:41:07)
2011/05/19(Thu) 16:56:31 編集(投稿者)

No59187 (あるしす さん) に返信
> 'System.Transactions.Diagnostics.DiagnosticTrace' のタイプ初期化子が例外をスローしました。

app.config (web.config) に、何かカスタムのセクションを付与していますか?
スペルや大文字小文字の違いなどの記述ミスで、そのような現象が発生する事があるようです。

http://social.msdn.microsoft.com/Forums/en-US/adodotnetdataproviders/thread/6aca67b4-291f-43bf-b6f7-e210d3b7ffd9/
http://social.msdn.microsoft.com/Forums/en-US/adodotnetdataproviders/thread/69f6e437-edba-4be3-bc6b-30b89652a190/


また、machine.config を正常稼働している PC のもので上書きしたら解決した例もあるようで。

http://en.w3support.net/index.php?db=so&id=893643


> ■No59189 (ツマツサツδ・email さん) に返信
# 2011/04/22 でPATIOさんが文字化けしていたけど、
# それと同じ現象なのかな…。名前的に近いのはマサヤさん?
引用返信 編集キー/
■59234 / inTopicNo.9)  Re[3]: データベース取得で例外発生
□投稿者/ todo (145回)-(2011/05/19(Thu) 16:50:05)
>     catch (Exception ex)
>     {
>       Console.WriteLine("Error: Failed to retrieve the required data from the DataBase.\n{0}", ex.Message);
>       return;
>     }

ex.StackTraceはどうなっていますか?

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -