多线程打开ACCESS数据库的奇怪问题,在主线程可以打开,重开县城就不能打开

haichao_ji haichao_ji 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
我现在在程序里遇到一个问题,
由于删除数据库的数据量比较大,所以想开一个线程单独删除,但是在新的线程里单步跟踪的时候数据库却根本不能打开,出问题的那句是hr = db.Open(_T("Microsoft.Jet.OLEDB.4.0"), &dbinit);每次返回的hr都不为0。

但是如果我不是单独开一个线程,则连接删除都没有问题。有人遇到过这样的问题吗?是access对多线程的支持有问题还是因为我的参数不对?下面是我的代码


HRESULT hr;
CDataSource db;
CDBPropSet dbinit(DBPROPSET_DBINIT);

dbinit.AddProperty(DBPROP_AUTH_CACHE_AUTHINFO, true);
dbinit.AddProperty(DBPROP_AUTH_ENCRYPT_PASSWORD, false);
dbinit.AddProperty(DBPROP_AUTH_MASK_PASSWORD, false);
dbinit.AddProperty(DBPROP_AUTH_PASSWORD, OLESTR(""));
dbinit.AddProperty(DBPROP_AUTH_USERID, OLESTR("Admin"));
char PathName[255];
GetModuleFileName( AfxGetInstanceHandle(), PathName,sizeof( PathName ) );
char *a,*b;
a = b = PathName;

while(b)
{
b=strchr(a+1,'\\');
if(b) a=b;
}
*a='\0';
CString temp=PathName;
temp+="\\playback.mdb";//我的数据库
dbinit.AddProperty(DBPROP_INIT_DATASOURCE,temp);
dbinit.AddProperty(DBPROP_INIT_MODE, (long)16);
dbinit.AddProperty(DBPROP_INIT_PROMPT, (short)4);
dbinit.AddProperty(DBPROP_INIT_PROVIDERSTRING, OLESTR(""));
dbinit.AddProperty(DBPROP_INIT_LCID, (long)1033);
//dbinit.AddProperty(DBPROP_AUTH_PERSIST_SENSITIVE_AUTHINFO, false);
hr = db.Open(_T("Microsoft.Jet.OLEDB.4.0"), &dbinit);
if (FAILED(hr))
{
AfxMessageBox("Can't connect to the database");
return hr;
}
...全文

相关推荐

.NET中获取Access新增记录Id怪现象解决方法

代码如下: using System; using System.Data.OleDb; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { Console.WriteLine(GetUserId(“dnawo”)); Console.ReadKey(); } /// <summary> /// 获取用户Id /// </summary> /// <param name=”name”></param> /// <returns></returns> static int GetUse

weixin_38530846

Delphi Access violations

Delphi Access violations 问题的解决之道 -

hangzhou_hammer

奇怪的hadrocharmonium

最近已经提出,带电的类charm素共振Zc(4100)和Zc(4200)是氢溴铵的两个状态,其与最低charm素态ηc和J /ψ相同,其通过夸克自旋对称性相关。 这里要指出的是,在这张照片中,人们可能期望它们存在一些重一些的奇异对应物Zcs,它们会衰减到ηcK和J /ψK。 讨论了此类像charm一样的奇怪共振的一些预期特性,为它们在奇怪的Bs介子衰变中的搜索设定了基准。

weixin_38738422

Access2000 Resize窗体自适应程序access2000

这是针对access2000所做的自动调整窗体和控件大小的控件,使你的窗口在缩放的时候各控件位置和大小会自动调整。这样你的程序即可在640*480分辨率下运行,也可在800*600下运行,而且在任何大小情况下,窗体里的控件都会随着窗体的大小而变化,保证你可以看到整个窗体的所有内容。只要改变窗体的大小,包括标签、文本框、下拉框、列表框、选项框、检查框、图片、普通子窗体、数据子窗体等控件都会自动按相应的比例实时改变大小。写这个控件的初衷主要是以前在开发VB程序时用到resize的控件,觉得比较好用,而当时找遍所有的资料,都找不到类似针对ACCESS的控件(VB的RESIZE控件在ACCESS中会出现一些奇怪的现象,主要是因为ACCESS窗体的特别结构),而当时我开发的一个项目需要同时适应800*600 和640*480 两种分辨率,所以触发我自己写这方面的程序。经过几次比较大的改动,现在大致可以满足我的需要。一年后,我在网络上找到Ken Getz, Paul Litwin, and Mike Gilbert写的Scale and Resize Your Access Forms演示程序,知道原来在这个世界,还有人与我有同样的想法,他们的功能做得挺棒,只可惜看不到他们的源码。不过知道他们是用API来做的。我比较了两者之间的速度,应该是差不多的。为了让大家了解,我迟点会把他们的演示程序上传。〖accResize1.0〗说明文件一、【主要功能】实现窗口在缩放的时候各控件位置和大小自动调整功能二、文件列表resize.mde 控件缩放的核心代码testresize.mdb 测试缩放效果的例子程序三、〖accResize1.0〗使用方法1. 确保你已经安装了access20002. 将下载的文件用WINRAR解压后放在同一个目录3. 用ACCESS打开(或双击)testresize.mdb,运行其中的窗体文件即可4. 如果你想在你的程序中使用这个功能,只要把resize.mde抄到你的程序目录下,然后打开你的程序,在工具菜单中选择[引用],引用resize.mde即可(你需进入代码状态才能看到工具菜单中的引用子菜单),最后在你自己程序的窗体中的resize事件中加入 resize.Form_myResize Me 这句程序即可。5. 请注意,为了加快窗体缩放的速度,所以程序有个特别注意的地方: 当你在窗体中添加新的控件或改变了位置,需在重新关闭你的程序(即关闭MDB后)再打开才能生效。实际我试过,即使增加新的控件就自动更新,速度亦差不多四、错误反馈1. 如果你发现软件中的错误,欢迎你反馈给作者。五、【使用许可/LICENSE】请仔细阅读以下使用许可,如果您不同意以下任何一点,请立即停止使用此软件。1.〖accResize1.0〗的作者王宇虹授予您对此版本的最终用户使用许可权;2.您不能对软件作任何的软件反向工程,如反汇编,跟踪等;3.您可以分发此软件,但不能收取任何费用或用于商业目的,同时,必须保证所分发的软件包含全部文件,并且不作任何修改;分发的软件应该至少包括我软件所附带的README.txt4.本软件不包含任何使用保证,不能保证适用或不出故障,由于此软件是免费提供,因此作者不对您或别的用户使用此软件所带来的理论上或实际的损失负责;5.如果您用了此软件就等于您同意以上几点许可;6.如果你觉的该软件好用,请发一封Email给作者表示感谢,这些支持将会使作者写出更好软件,谢谢!六、【软件注册费用】完全免费!!本软件所有功能都可以免费使用,完全没有限制。七、【源码费用】如果你对此软件的源码感兴趣,你可以向作者免费索取。你只要发封EMAIL给作者,说明你需要索取这个程序的源码,作者即会把源码EMAIL给你。电子信箱:wang_yu_hong@163.net tmtony@21cn.com你可以到我的主页http://www.zstmcomputer.com 或 http://tmcomputer.6to23.com 免费获得其它完整的应用软件或一些已公开的源码。八、【主要技术】具体请参照

chenxh

Access97 Resize窗体自适应程序access2000

说 明: 〖accResize1.0〗<BR><BR>这是针对access97所做的自动调整窗体和控件大小的控件,使你的窗口在缩放的时候各控件位置和大小会自动调整。这样你的程序即可在640*480分辨率下运行,也可在800*600下运行,而且在任何大小情况下,窗体里的控件都会随着窗体的大小而变化,保证你可以看到整个窗体的所有内容。只要改变窗体的大小,包括标签、文本框、下拉框、列表框、选项框、检查框、图片、普通子窗体、数据子窗体等控件都会自动按相应的比例实时改变大小。<BR>写这个控件的初衷主要是以前在开发VB程序时用到resize的控件,觉得比较好用,而当时找遍所有的资料,都找不到类似针对ACCESS的控件(VB的RESIZE控件在ACCESS中会出现一些奇怪的现象,主要是因为ACCESS窗体的特别结构),而当时我开发的一个项目需要同时适应800*600 和640*480 两种分辨率,所以触发我自己写这方面的程序。经过几次比较大的改动,现在大致可以满足我的需要。一年后,我在网络上找到Ken Getz, Paul Litwin, and Mike Gilbert写的Scale and Resize Your Access Forms演示程序,知道原来在这个世界,还有人与我有同样的想法,他们的功能做得挺棒,只可惜看不到他们的源码。不过知道他们是用API来做的。我比较了两者之间的速度,应该是差不多的。为了让大家了解,我迟点会把他们的演示程序上传。<BR><BR><BR><BR><BR>〖accResize1.0〗说明文件<BR><BR><BR>一、【主要功能】<BR>实现窗口在缩放的时候各控件位置和大小自动调整功能<BR>二、文件列表<BR><BR>resize.mde 控件缩放的核心代码<BR>testresize.mdb 测试缩放效果的例子程序<BR><BR>三、〖accResize1.0〗使用方法<BR><BR>1. 确保你已经安装了access97<BR>2. 将下载的文件用WINRAR解压后放在同一个目录<BR>3. 用ACCESS打开(或双击)testresize.mdb,运行其中的窗体文件即可<BR>4. 如果你想在你的程序中使用这个功能,只要把resize.mde抄到你的程序目录下,然后打开你的程序,在工具菜单中选择[引用],引用resize.mde即可(你需进入代码状态才能看到工具菜单中的引用子菜单),最后在你自己程序的窗体中的resize事件中加入 resize.Form_myResize Me 这句程序即可。<BR><BR>5. 请注意,为了加快窗体缩放的速度,所以程序有个特别注意的地方: 当你在窗体中添加新的控件或改变了位置,需在重新关闭你的程序(即关闭MDB后)再打开才能生效。<BR>实际我试过,即使增加新的控件就自动更新,速度亦差不多<BR><BR><BR>四、错误反馈<BR><BR>1. 如果你发现软件中的错误,欢迎你反馈给作者。<BR><BR><BR>五、【使用许可/LICENSE】<BR><BR>请仔细阅读以下使用许可,如果您不同意以下任何一点,请<BR>立即停止使用此软件。<BR><BR>1.〖accResize1.0〗的作者王宇虹授予您对此版本的最终用户使用<BR>许可权;<BR>2.您不能对软件作任何的软件反向工程,如反汇编,跟踪等;<BR>3.您可以分发此软件,但不能收取任何费用或用于商业目的,<BR>同时,必须保证所分发的软件包含全部文件,并且不作任何<BR>修改;分发的软件应该至少包括我软件所附带的README.txt<BR>4.本软件不包含任何使用保证,不能保证适用或不出故障,由<BR>于此软件是免费提供,因此作者不对您或别的用户使用此<BR>软件所带来的理论上或实际的损失负责;<BR>5.如果您用了此软件就等于您同意以上几点许可;<BR>6.如果你觉的该软件好用,请发一封Email给作者表示感谢,这些支持将会使作者<BR>写出更好软件,谢谢!<BR><BR>六、【软件注册费用】<BR>完全免费!!<BR>本软件所有功能都可以免费使用,完全没有限制。<BR><BR>七、【源码费用】<BR><BR>如果你对此软件的源码感兴趣,你可以向作者免费索取。<BR>你只要发封EMAIL给作者,说明你需要索取这个程序的源码,作者即会把源码EMAIL给你。<BR>电子信箱:wang_yu_hong@163.net <BR>tmtony@21cn.com<BR><BR><BR>你可以到我的主页<BR>http://www.zstmcomputer.com <BR>或 http://tmcomputer.6to23.com <BR><BR>免费获得其它完整的应用软件或一些已公开的源码。<BR><BR><BR><BR>八、【主要技术】<BR>具体请参照程序<BR><BR><BR>系统编写开始时间: 12/03/2001<BR>完成及验收时间: 18/04/2001<BR><BR>九、【感谢】<BR>此软件的诞生得到了同事以及客户的支持和测试,在此表示感谢。<BR>  

chenxh
评论 3
收藏 已收藏
分享
返回顶部
haichao_ji
数据库 4,017 成员 39,805 内容