可以想象不是每个人都能参与全局备份的

情景:
A某在12号还原曾经在10号备份的数据,
B某12好来看的时候发现10号以后12号之前的不见了

所以这里要涉及到部分备份,目前想到的方式抽出归属与A用户下的名片数据加以保存
保存方式为insert语句,方便还原(类似批处理)

在sql语法中insert语句几个要素 表名,字段名,数据

现在需要考虑的是 给一个mdb文件路径获取 该文件下的表名以及表下的字段名

下载这个实例数据库

注:网上下载一个已有的源程序,里面的数据库一般都有很多数据,可以很好的利用一下
以后就不用,111,222,33的生成数据了

接下来你得生成这样的句子

insert into [表名]
([字段],[字段],[字段],[字段]....)
values
(值,'值',值,值....)

插入失败的情况
1.出现保留关键字,而又未加[]
2.字段和值数目不对应
3.试图对自动编号进行插值
4.其他情况

这里主要考虑的是 如果该字段为 主动编号 我们就不进行插值

获取字段的类型






>>>>>>>>>>>>>

string _ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Card\Card.Data\data.mdb;Persist Security Info=False";

OleDbConnection conn = new OleDbConnection(_ConnectionString);

if (conn.State != ConnectionState.Open) conn.Open();

//第二参数实际上是一种过滤m是表名,我特别建立的一个全类型表(除查阅向导字段)

DataTable dtSchema = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Columns, new object[] { null, null, "m" });

 

结果如下表
ie7下看图


TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME COLUMN_PROPID ORDINAL_POSITION COLUMN_HASDEFAULT COLUMN_DEFAULT COLUMN_FLAGS IS_NULLABLE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE DATETIME_PRECISION CHARACTER_SET_CATALOG CHARACTER_SET_SCHEMA CHARACTER_SET_NAME COLLATION_CATALOG COLLATION_SCHEMA COLLATION_NAME DOMAIN_CATALOG DOMAIN_SCHEMA DOMAIN_NAME DESCRIPTION
    m m_OLE 对象   14 False   234 True 128 0 0                          
    m m_备注   2 False   234 True 130 0 0                          
    m m_超链接   15 False   234 True 130 0 0                          
    m m_货币   11 True 0 122 True 6     19                        
    m m_日期/时间   10 False   122 True 7         0                    
    m m_是/否   13 False   90 False 11 2                            
    m m_数字_长整型   3 True 0 122 True 3     10                        
    m m_数字_单精度型   6 True 0 122 True 4     7                        
    m m_数字_双精度型   7 True 0 122 True 5     15                        
    m m_数字_同步复制ID   8 False   122 True 72                              
    m m_数字_小数   9 True 0 122 True 131     18 0                      
    m m_数字_整型   5 True 0 122 True 2     5                        
    m m_数字_字节   4 True 0 122 True 17     3                        
    m m_文本   1 True "这是文本类型" 106 True 130 50 100                          
    m m_自动编号   12 False   90 False 3     10                        

没时间去找真正的出处
http://tech.ddvip.com/2006-12/116748753617007.html
这篇文中的一段话
解释数据类型映射

  >是否映射对SQL Server 类型由OLE DB数据类型和描述该列或数量值的DBCOLUMNFLAGS值共同确定。在使用COLUMNS架构行集时,由DATA_TYPE和 COLUMN_FLAGS列来代表这些值。在使用IColumnsInfo::GetColumnInfo 接口时,由DBCOLUMNINFO结构的wType和 dwFlags 成员代表这些信息。

 

虽然是sqlserver的但是对于access也有一定帮助意义
这里自动编号对应的COLUMN_FLAGS和DATA_TYPE为90和3就锁定了 某一数据类型

也就是说通过判断两个字段可以分辨出某一字段的数据的类型

关于这张表的获得 大家可以自己加一张表

其他参考资料:
获取数据架构信息(获取数据类型)
http://support.microsoft.com/kb/309681/zh-cn
http://support.microsoft.com/kb/309488
http://support.microsoft.com/kb/318452

- -!由于研究时间过长 只有等'下'次把这个代码片段完成