Access 操作学习记录

 1.创建 Access 数据库,并关闭其连接


Access 操作的两个引用:
1) Microsoft ActiveX Data Objects 2.8 Library
2) Microsoft ADO Ext. 2.8 for DDL and Security

2.由 DataTable 创建数据库表

注:少数列类型与Access字段类型无法对应,需要单独创建对应关系。

3.DataTable的字符类型“ID数字”字段排序

4.检查Access数据库中指定表是否存在

检查“表1”是否存在的语句:

SELECT Count(*) FROM MSysObjects WHERE (((MSysObjects.Name) Like '表1')); 

返回值为1 --  存在,返回0 -- 不存在。

5.Access数据库间的数据复制

查询语句示例:

  • select * form 表名 in 'd:/test.mdb';
  • select * from [;Database=d:/test.mdb].表名;
  • SELECT * INTO 新表 FROM 表名 IN 'd:/test.mdb' WHERE id='100'; 如新表存在,则会删除之后新建

6.数字字符串字段匹配查询

示例:查找以 001 开头全为数字的记录

SELCET * FROM 表名 WHERE 字段名 Like '00[1,2,5,6]*' And 字段名 Not Like '*[!0-9]*'

 

7.大数据量处理的 ContextSwitchDeadlock 异常

问题:

把大约16.6w的记录写入DataTable然后提取信息写入新的数据库时,程序中断,出现 “检测到 ContextSwitchDeadlock”的提示,详细信息如下:
Message: CLR 无法从 COM 上下文 0x1a1a48 转换为 COM 上下文 0x1a1bb8,这种状态已持续 60 秒。拥有目标上下文/单元的线程很有可能执行的是非泵式等待或者在不发送 Windows 消息的情况下处理一个运行时间非常长的操作。这种情况通常会影响到性能,甚至可能导致应用程序不响应或者使用的内存随时间不断累积。要避免此问题,所有单线程单元(STA)线程都应使用泵式等待基元(如 CoWaitForMultipleHandles),并在运行时间很长的操作过程中定期发送消息。

 

解决方法:

①把代码放到线程中执行,异常消失。(原理不明)

②如果出现这个提示,点击在调试菜单中的异常选项,在Managed Debugging Assistants 中将ContextSwitchDeadlock后面的第一个勾给去掉就可以了。(参考:http://blog.csdn.net/zhongzhengfeng/archive/2009/01/08/3732681.aspx

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值