我有以下代码,只是为了测试连接:
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,并且有问题的应用程序是现有的。我正在尝试向其添加数据库,以便我可以更轻松地加载大量数据。
答案 0 :(得分: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
的详细信息。