尝试读取或写入受保护的内存。这通常指示其他内存已损坏

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了尝试读取或写入受保护的内存。这通常指示其他内存已损坏相关的知识,希望对你有一定的参考价值。

我在ACCESS中创建了一个查询,在ACCESS中可以正常运行并显示,但是在用C#取出的时候(使用OleDbDataAdapter),就会提示“尝试读取或写入受保护的内存。这通常指示其他内存已损坏”,并不是每次都会有这样的错误,就是偶尔会提示这样的错误,下面是SQL语句:
SELECT P.年份 AS [年份],BT.所有作物化肥需求预估量 AS [氮肥需求量],P.产量 AS [多巴胺氨实物量],'na' AS [变化率1],((多巴胺氨实物量*0.82)/BT.所有作物化肥需求预估量)*100 AS [所占比例1]
FROM PIE附加2 AS P INNER JOIN [不同作物化肥需求总结] BT ON P.年份=BT.年份
WHERE P.原料名称='多巴胺氨' AND BT.化肥名称='氮肥' AND P.年份<Year(Date())
UNION (
SELECT BT.年份 AS [年份],B.所有作物化肥需求预估量 AS [氮肥需求量],((B.所有作物化肥需求预估量*(BT.多巴胺铵比例/100))/0.82) AS [多巴胺氨实物量],'na' AS [变化率1],BT.多巴胺铵比例 AS [所占比例1]
FROM 不同氮肥品种的需求量 BT INNER JOIN [不同作物化肥需求总结] B ON BT.年份=B.年份
WHERE B.化肥名称='氮肥'
);
请各位高手们帮我看看,谢谢啦

参考技术A long AutoLinkCom(long * port)
port是一个指针,应该这样声明
[DllImport("Advic32.dll", EntryPoint = "AutoLinkCom")]
public static extern long AutoLinkCom(IntPtr port);
或者
[DllImport("Advic32.dll", EntryPoint = "AutoLinkCom")]
public static extern long AutoLinkCom(ref long port);
请参考

以上是关于尝试读取或写入受保护的内存。这通常指示其他内存已损坏的主要内容,如果未能解决你的问题,请参考以下文章

C#尝试读取或写入受保护的内存。这通常指示其他内存已损坏。

尝试读取或写入受保护的内存。这通常指示其他内存已损坏

System.AccessViolationException: 尝试读取或写入受保护的内存。这通常指示其他内存已损坏。

尝试读取或写入受保护的内存。这通常指示其他内存已损坏

尝试读取或写入受保护的内存。这通常指示其他内存已损坏

c#尝试读取或写入受保护的内存。这通常指示其他内存已损坏。