我有这样的代码:
string TmpMakat, TmpIsShakil, TmpDes;
SqlCeDataReader read;
public bool LOOK()
{
try
{
TmpMakat = "";
TmpIsShakil = "";
TmpDes = "";
Cmd.CommandType = CommandType.TableDirect;
Cmd.CommandText = "Items";
Cmd.IndexName = "A";
Cmd.SetRange(DbRangeOptions.Match, new object[] { txtMakat.Text }, null);
try
{
read = Cmd.ExecuteReader(); // <--- This is the Error
}
catch
{
MessageBox.Show("Error");
return false;
}
while (read.Read())
{
TmpMakat = read[0].ToString();
TmpIsShakil = read[1].ToString();
TmpDes = read[2].ToString();
}
read.Dispose();
if (TmpMakat == "")
{
TmpMakat = "";
TmpIsShakil = "";
TmpDes = "";
lblDes.Text = "";
lblQty.Text = "";
return false;
}
else
{
IsShakil = (TmpIsShakil == "1") ? true : false;
lblQty.Text = (IsShakil == true) ? "B" : "A";
lblDes.Text = TmpDes;
return true;
}
}
catch
{
return false;
}
}但如果有任何错误-它永远不会进入捕获
我有时会遇到这样的错误:
Error
A native exception has occurred in
myProg.exe.
Select Quit and then restart this program, or select Details
for more information.当我按下更多细节时,我看到了这个:
Error
ExceptionCode: 0xc0000005
EceptionAddress: 0x41efaf7c
Reading: 0x00000000
Faulting module: sqlcese35.dll
Offset: 0x0005af7c发布于 2011-03-23 21:14:31
ExceptionCode: 0xc0000005
这是一个令人讨厌的问题,用.NET的话说就是AccessViolationException。很明显,SQL Compact正在崩溃,它可能是在工作线程中这样做的,否则catch子句就会捕捉到它。诊断这将是困难的,但从误信数据库文件内容开始,它可能会被损坏。考虑一个内存不足的问题,它在一个空指针引用上轰炸。查找来自Microsoft的更新。
发布于 2011-03-23 20:52:34
错误发生在本机代码(SQL CE)中,因此
要么是.NET compact框架无法捕获这种错误(不知道,可能会很奇怪,但很难忽略)
或者,错误发生在try/catch块之外的第一行。
由于您正在调用一个CreateCommand方法,我们可以假定该方法是向下调用SQL的,因此第二种可能性更大。
你能把赋值放在try/catch块中吗?
发布于 2016-06-13 10:06:08
我犯了完全相同的错误,沮丧地拼命挣扎,什么也没拿到。我直接引用SQL CE dll,并在部署期间将它们全部复制到设备,因此在阅读上述解决方案后,我尝试删除所有文件并从头开始重新部署。这也不起作用。最后,我将SQL Server CE3.5 SP2直接安装到设备上,CAB文件位于
C:\Program Files (x86)\Microsoft SQL Server Compact Edition\v3.5\Devices\wce500\armv4i\sqlce.wce5.armv4i.cab (在我的例子中是ARMv4,您的可能有所不同)。将其安装到设备上后,一切运行正常。
https://stackoverflow.com/questions/5405420
复制相似问题