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

Erik 的意思是将您的代码更改为:

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 回答