1

接続をテストするためだけに、次のコードがあります。

public void Test()
{
    SqlCeConnection conn = new SqlCeConnection(@"Data Source=/Application/Database.sdf;");
    try
    {
        conn.Open();
        label1.text = "Connection!";
    }
    catch (Exception ee)
    {
        label1.text = "No connection!";
    }
}

このデータベースに接続しようとすると、アプリケーションは例外をスローしconn.Open()ます

SqlCeException が処理されませんでした

そしてそれ以上のものはありません。例外メッセージが空白なので、何が問題なのかわかりません。

データベースファイルがそこにあり、アプリケーションは true を返します

File.Exist(@"/Application/Database.sdf");

したがって、ファイルにアクセスできます。

私はおそらくここで本当に間違ったことをしているのですが、誰か助けてもらえますか?

Windows CE 5 で Compact Framework 2.0 を使用していますが、問題のアプリケーションは既存のものです。大量のデータをより簡単にロードできるように、データベースを追加しようとしています。

4

1 に答える 1

1

エリックが言っているのは、コードを次のように変更することです。

public void Test()
{
  SqlCeConnection conn = new SqlCeConnection(@"Data Source=/Application/Database.sdf;");
  try
  {
    conn.Open();
    label1.text = "Connection!";
  }
  catch (SqlCeException ee)  // <- Notice the use of SqlCeException to read your errors
  {
    SqlCeErrorCollection errorCollection = ee.Errors;

    StringBuilder bld = new StringBuilder();
    Exception inner = ee.InnerException;

    if (null != inner) 
    {
      MessageBox.Show("Inner Exception: " + inner.ToString());
    }
    // Enumerate the errors to a message box.
    foreach (SqlCeError err in errorCollection) 
    {
      bld.Append("\n Error Code: " + err.HResult.ToString("X")); 
      bld.Append("\n Message   : " + err.Message);
      bld.Append("\n Minor Err.: " + err.NativeError);
      bld.Append("\n Source    : " + err.Source);

      // Enumerate each numeric parameter for the error.
      foreach (int numPar in err.NumericErrorParameters) 
      {
        if (0 != numPar) bld.Append("\n Num. Par. : " + numPar);
      }

      // Enumerate each string parameter for the error.
      foreach (string errPar in err.ErrorParameters) 
      {
        if (String.Empty != errPar) bld.Append("\n Err. Par. : " + errPar);
      }

    }
    label1.text = bld.ToString();
    bld.Remove(0, bld.Length);
  }
}

Exceptionあなたが今キャッチしているジェネリックは、の詳細を提供できませんSqlCeException

于 2013-05-22T14:54:47.923 に答える