DAO中如何判断一个表是否存在啊?

picking 2004-09-13 09:25:15
用DAO数据库编程,我想判断一个表是否存在,不知道如何进行,望大侠指点!
...全文
198 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
picking 2004-09-15
  • 打赏
  • 举报
回复
多谢大侠了!
picking 2004-09-15
  • 打赏
  • 举报
回复
唉,只有自己顶了!!!!!!!!!!1
内存泄漏 2004-09-15
  • 打赏
  • 举报
回复
上面的login1是表名
内存泄漏 2004-09-15
  • 打赏
  • 举报
回复
用CDaoTableDef对象可以判断,代码如下:

// db是你程序中打开的CDaoDatabase对象
CDaoTableDef td( &db );
try
{
td.Open( "login1" );
//如果存在该表,则会显示下面的对话框
AfxMessageBox("have this table");
}
catch( CDaoException* e )
{
//如果不存在该表,则会显示下面的对话框
AfxMessageBox("no this table");
e->Delete( );
}
td.Close( );
内存泄漏 2004-09-15
  • 打赏
  • 举报
回复
那你就直接把AfxMessageBox("no this table");这句代码换成建表的代码就可以了。
sodangerous 2004-09-15
  • 打赏
  • 举报
回复
//************************************************************
CDaoTableDef td( &db );
try
{
td.Open( "login1" );
//如果存在该表,则会显示下面的对话框
AfxMessageBox("have this table");
}
catch( CDaoException* e )
{
//如果不存在该表,则会显示下面的对话框
AfxMessageBox("no this table");
e->Delete( );
}
td.Close( );
//***************************************************
如果我不是要抓住例外,而是没有的话就创建一个,应该怎么处理?
picking 2004-09-13
  • 打赏
  • 举报
回复
能否说详细点,谢谢!
phineco 2004-09-13
  • 打赏
  • 举报
回复
用CDaoDatabase类的函数
void GetTableDefInfo( int nIndex, CDaoTableDefInfo& tabledefinfo, DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO )
Excel VBA与数据库整合应用范例精讲(范例文件代码) 内容简介   《Excel VBA 数据库整合应用范例精讲》用180个实例介绍了利用Excel VBA来操作数据库(包括Access、SQL Server和FoxPro)的实用方法和技巧。   全书共11章。第1~6章是利用Excel VBA操作Access数据库的实例;第7~8章是利用Excel VBA操作SQL Server数据库和FoxPro数据库的方法和技巧实例;第9~10章是将工作簿当作数据库以及将文本文件当作数据库进行操作的方法和技巧实例。第11章以一个具有较大使用价值的固定资产管理系统为案例,详细介绍Excel VBA开发管理系统的过程。每个实例分析透彻,代码完整,技巧全面,使用得心应手。 目录 第1章 动态创建Access数据库和数据 实例1-1 利用DAO创建数据库和数据 实例1-2 利用ADOX创建数据库和数据 实例1-3 利用SQL语句创建数据库和数据 实例1-4 在已有的数据库创建数据DAO) 实例1-5 在已有的数据库创建数据(ADOX) 实例1-6 在已有的数据库创建数据(SQL,Command对象) 实例1-7 在已有的数据库创建数据(SQL,Recordset对象) 实例1-8 利用Access对象创建数据库和数据 实例1-9 利用Access对象在已有的数据库创建数据 实例1-10 利用工作数据创建数据(ADOX) 实例1-11 利用工作数据创建数据(ADO+SQL) 实例1-12 利用工作数据创建数据DAO) 实例1-13 利用已有的数据创建新数据(ADO) 实例1-14 利用已有的数据创建新数据DAO) 实例1-15 利用已有的数据创建新数据(Access) 第2章 获取Access数据库信息 实例2-1 检查数据是否存在(ADO) 实例2-2 检查数据是否存在(ADOX) 实例2-3 检查数据是否存在DAO) 实例2-4 检查数据是否存在(Access) 实例2-5 获取数据库所有的名称和类型(ADO) 实例2-6 获取数据库所有的名称和类型(ADOX) 实例2-7 获取数据库所有的名称(DAO) 实例2-8 获取数据库所有数据名称(ADO) 实例2-9 获取数据库所有数据名称(ADOX) 实例2-10 获取数据库所有数据名称(DAO) 实例2-11 获取数据库所有数据名称(Access) 实例2-12 检查某字段是否存在(ADO) 实例2-13 检查某字段是否存在(ADOX) 实例2-14 检查某字段是否存在DAO) 实例2-15 检查某字段是否存在(Access) 实例2-16 获取数据库某数据的所有字段信息(ADO) 实例2-17 获取数据库某数据的所有字段信息(ADOX) 实例2-18 获取数据库某数据的所有字段信息(DAO) 实例2-19 获取数据库某数据的所有字段信息(Access) 实例2-20 获取数据库的所有查询信息(ADOX) 实例2-21 获取数据库的所有查询信息(DAO) 实例2-22 获取数据库的模式信息(OpenSchema) 实例2-23 获取的创建日期和最后更新日期(ADOX) 实例2-24 获取的创建日期和最后更新日期(DAO) 第3章 查询获取Access数据库记录数据 实例3-1 将数据库记录数据全部导入到Excel工作(ADO,之一) 实例3-2 将数据库记录数据全部导入到Excel工作(ADO,之二) 实例3-3 将数据库记录数据全部导入到Excel工作(ADO,之三) 实例3-4 将数据库记录数据全部导入到Excel工作DAO,之一) 实例3-5 将数据库记录数据全部导入到Excel工作DAO,之二) 实例3-6 将数据库记录数据全部导入到Excel工作(QueryTable集合) 实例3-7 将数据库的某些字段的记录数据导入到Excel工作(ADO) 实例3-8 将数据库的某些字段记录数据导入到Excel工作DAO) 实例3-9 查询前面的若干条记录(全部字段)(TOP) 实例3-10 查询前面的若干条记录(部分字段)(TOP) 实例3-11 查询不重复的字段记录(DISTINCT) 实例3-12 利用Like运算符进行模糊查询 实例3-13 查询某一区间内的记录(BETWEEN) 实例3-14 查询存在于某个集合里面的记录(IN) 实例3-15 将查询结果进行排序(ORDER BY) 实例3-16 进行复杂条件的查询(WHERE) 实例3-17 利用合计函数进行查询(查询最大值和最小值) 实例3-18 利用合计函数进行查询(查询合计值和平均值) 实例3-19 将一个查询结果作为查询条件进行查询 实例3-20 将查询结果进行分组(GROUP BY) 实例3-21 将查询结果进行分组(HAVING) 实例3-22 通过计算列进行查询 实例3-23 使用IS NULL运算符进行查询 实例3-24 使用COUNT函数进行查询 实例3-25 使用FIRST函数与LAST函数查询第一条记录和最后一条记录的字段 实例3-26 使用Parameters参数动态查询记录(DAO):指定单个参数 实例3-27 使用Parameters参数动态查询记录(DAO):指定多个参数 实例3-28 使用Parameters参数动态查询记录(ADO):指定单个参数 实例3-29 使用Parameters参数动态查询记录(ADO):指定多个参数 实例3-30 使用别名查询数据库 实例3-31 将查询结果作为窗体控件的源数据 实例3-32 通过窗体控件查询浏览数据库记录 实例3-33 多查询(WHERE连接) 实例3-34 多查询(内连接INNER JOINT) 实例3-35 多查询(左外连接LEFT OUTER JOINT) 实例3-36 多查询(右外连接RIGHT OUTER JOINT) 实例3-37 多查询(子查询WHERE,ANY,SOME) 实例3-38 多查询(子查询EXISTS,NOT EXISTS) 实例3-39 从两个数据查询出都存在的记录 实例3-40 从两个数据查询出只存在于某个数据的记录 实例3-41 将查询结果生成一个数据 实例3-42 将查询结果保存为一个XML文件 实例3-43 利用工作实现记录的分页显示 实例3-44 利用窗体实现记录的分页显示 第4章 编辑Access数据库数据 实例4-1 添加新记录(ADO+AddNew) 实例4-2 添加新记录(ADO+SQL) 实例4-3 添加新记录(DAO+AddNew) 实例4-4 添加新记录(DAO+SQL) 实例4-5 添加新记录(Access+SQL) 实例4-6 修改更新特定记录(ADO+SQL) 实例4-7 修改更新特定记录(DAO+SQL) 实例4-8 修改更新特定记录(Access+SQL) 实例4-9 修改更新全部记录(ADO+SQL) 实例4-10 修改更新全部记录(DAO+SQL) 实例4-11 修改更新全部记录(Access+SQL) 实例4-12 删除特定记录(ADO+SQL) 实例4-13 删除特定记录(DAO+SQL) 实例4-14 删除特定记录(Access+SQL) 实例4-15 删除全部记录(ADO+SQL) 实例4-16 删除全部记录(DAO+SQL) 实例4-17 删除全部记录(Access+SQL) 实例4-18 通过窗体编辑记录 第5章 将Excel工作数据导入到Access数据库 实例5-1 将整个工作数据都保存为新Access数据库(Access) 实例5-2 将工作的某些区域数据保存为新Access数据库(Access) 实例5-3 将工作簿的所有工作数据分别保存为不同的数据(Access) 实例5-4 将多个工作簿的某个工作数据汇总为新Access数据库(Access) 实例5-5 将多个工作簿的某个工作数据保存为不同的数据(Access) 实例5-6 将工作数据保存到已有的Access数据库(循环方式)(ADO) 实例5-7 将工作数据保存到已有的Access数据库(循环方式)(DAO) 实例5-8 将工作数据保存到已有的Access数据库(数组方式)(ADO) 实例5-9 将工作数据保存到已有的Access数据库(数组方式)(DAO) 实例5-10 将工作簿的所有工作数据分别保存为不同的数据(ADO) 实例5-11 将工作簿的所有工作数据分别保存为不同的数据DAO) 第6章 操作Access数据 实例6-1 打开数据库和数据(GetObject函数) 实例6-2 打开数据库和数据(CreateObject函数) 实例6-3 删除数据(ADO) 实例6-4 删除数据(ADOX) 实例6-5 删除数据DAO+DELETE) 实例6-6 删除数据DAO+SQL) 实例6-7 删除数据(Access) 实例6-8 为数据增加字段(ADO) 实例6-9 为数据增加字段(ADOX) 实例6-10 为数据增加字段(DAO) 实例6-11 为数据增加字段(Access) 实例6-12 删除字段(ADO) 实例6-13 删除字段(ADOX) 实例6-14 删除字段(DAO) 实例6-15 删除字段(Access) 实例6-16 改变字段的类型(ADO) 实例6-17 改变字段的类型(DAO) 实例6-18 改变字段的类型(Access) 实例6-19 改变字段的长度(ADO) 实例6-20 改变字段的长度(DAO) 实例6-21 改变字段的长度(Access) 实例6-22 重命名数据(Access) 实例6-23 复制数据(Access) 实例6-24 复制数据(ADO) 实例6-25 复制数据DAO) 实例6-26 通过窗体维护数据库 第7章 操作SQL Server数据库 实例7-1 判断SQL Server数据库是否存在(ADO) 实例7-2 检查数据是否存在(ADOX) 实例7-3 创建新的SQL Server数据库和数据(ADO) 实例7-4 在已有的SQL Server数据库创建数据(ADO) 实例7-5 从SQL Server数据库服务器删除数据库(ADO) 实例7-6 从SQL Server数据库删除数据(ADO) 实例7-7 将SQL Server数据库的数据导入到Excel工作(ADO) 实例7-8 将SQL Server数据库的数据导入到Excel工作DAO) 实例7-9 查询获取SQL Server数据库的数据(ADO) 实例7-10 查询获取SQL Server数据库的数据(DAO) 实例7-11 将工作数据导入到SQL Server数据库(ADO) 实例7-12 向SQL Server数据库添加记录的一般方法 实例7-13 将SQL Server数据库转换为Access数据库 实例7-14 将Access数据库转换为SQL Server数据库 第8章 操作FoxPro数据库 实例8-1 将FoxPro数据库全部数据导入到Excel工作 实例8-2 查询获取FoxPro数据库数据 实例8-3 将Excel工作数据保存到FoxPro数据库 实例8-4 判断FoxPro数据库的字段是否存在 实例8-5 获取FoxPro数据库的字段信息 第9章 将Excel工作簿当作数据库来操作 实例9-1 从工作簿的某个工作查询获取数据(ADO) 实例9-2 从工作簿的全部工作查询获取数据(ADO) 实例9-3 利用DAO从工作查询数据 实例9-4 查询其他工作簿的数据(ADO) 实例9-5 获取其他工作簿的工作名称清单(ADOX) 实例9-6 利用ADO对工作数据进行多重排序 实例9-7 利用ADO按照字符的长度对数据进行排序 实例9-8 比较两张,将两个相同的行数据抓取出来 实例9-9 比较两张,将只存在于某个的行数据抓取出来 实例9-10 删除工作数据区域内的所有空行 第10章 将文本文件当作数据库来操作 实例10-1 利用ADO导入文本文件的全部内容 实例10-2 利用DAO导入文本文件的全部内容 实例10-3 利用ADO导入文本文件的部分内容 实例10-4 利用DAO导入文本文件的部分内容 实例10-5 利用ADO获取文本文件的行数和列数 实例10-6 利用ADO将超过65536行的文本文件数据导入到Excel工作 实例10-7 将工作全部数据保存为文本文件(SaveAs) 实例10-8 将工作全部数据保存为文本文件(循环) 实例10-9 将数据库数据导出为文本文件 实例10-10 将文本文件保存为Access数据库(Access) 实例10-11 将文本文件保存为Access数据库(ADO+ADOX) 第11章 Excel VBA开发数据库管理系统 11.1 固定资产管理系统的总体设计 11.1.1 固定资产管理系统功能模块 11.1.2 固定资产管理系统数据库和数据的设计 11.1.3 设计系统工作簿 11.1.4 设计系统的自定义菜单 11.1.5 引用对象库 11.2 系统管理模块设计 11.2.1 用户名和密码的保存 11.2.2 “用户登录”窗口结构设计 11.2.3 “用户登录”窗体程序代码设计 11.2.4 “修改用户名”窗体结构设计 11.2.5 “修改用户名”窗体的程序代码设计 11.2.6 “修改密码”窗体结构设计 11.2.7 “修改密码”窗体的程序代码设计 11.3 基础资料管理模块设计 11.4 固定资产日常管理模块设计 11.4.1 固定资产日常管理窗体的结构设计 11.4.2 固定资产日常管理窗体的程序代码设计 11.4.3 “固定资产查询”窗体的结构设计 11.4.4 “固定资产查询窗体”的程序代码设计 11.4.5 固定资产日常管理模块的应用 11.5 报输出模块设计 11.5.1 固定资产折旧计算方法 11.5.2 生成固定资产卡片子模块的设计 11.5.3 生成统计报子模块的设计 11.5.4 生成固定资产折旧子模块的设计 11.5.5 编制折旧费用分配子模块的设计 11.6 系统菜单转换模块的设计 11.6.1 恢复Excel系统菜单 11.6.2 恢复固定资产管理系统自定义菜单 11.7 为工作簿指定Open和BeforeClose事件 11.7.1 为工作簿指定Open事件 11.7.2 为工作簿指定BeforeClose事件
为什么区块链必须是高并发的? 1. 摩尔定律早已结束目前,提高并发性是解决人类计算能力的主要方向了。但是并发的编程模型一直受到来自上下两方的压力。2000年开始之际,人们已经意识到摩尔定律失效了。你不太可能期待着今年写的C代码在明年的时候能够被更快的处理器运行了。因为处理器性能的提升主要是通过堆积更多的core来完成。所以为了编写更快的代码,你要做的是编写并发式的程序,同时使用更多的核、更多的CPU、更多的机器。对于并发式的编程模型这就是来自于下方的压力。当今的主流商业应用软件都是跑在web端的,7乘24小时百万级以上的并发访问。人们已经无法想象一个运行在桌面的单机程序实现同样的商业价值。对于编程模型来说,这是来自于上方的压力。所以当我们谈论区块链时,我们需要明白支持并发性才能满足市场的需求。2. 线程模型并不理想线程模型是上世纪90年代提出的并发模型,线程模型广泛应用在Java虚拟机、CLR、.net虚拟机,甚至应用于Erlang这样更高级的系统。线程模型失败的地方在于如果你在读一段Java或C sharp代码,你无法明白有多少个线程在里面。我们可以讨论并行性和并发性,也可以讨论并发式和分步式,前提是我们必须搞清这几个概念。并行性指同步进行的多项活动之间并不共享信息。就像一条八车道的公路,根本没有换道,那就是并行。当你开始允许换道时,不同的活动和线程之间出现交互,那就是并发。分布式就是把每一笔交易想像成一辆车,换道就是切换到不同的处理器上。分布式必然需要面对故障模式,如果允许单独某个任务失败,就带来了本地(local)的概念。线程有不同的概念,包括有操作系统线程和cpu内核的物理线程等等。我谈论的是虚拟机上提供并发性的编程模型。线程模型的问题是本质上在编程语言的语义层面并没有提供并发性的支持。我用语言集成查询作为一个例子,证明语言集成将最终胜出。语言集成查询开始于微软的函数式编程大牛Eric Meyer。数据存储的两个方法是:1,提供一个支持数据存储的库;2,提供一个查询的语言特性。在第一种情况下,并没有类型系统(type system)帮助你对查询进行语义检查。在后一种情况下,类型系统和编译器参与检查确保查询处于良好状态并且不会断。在过去的十五年,语言集成查询已经是最热门的话题之一。所以时间将会证明,语言整合的方法会稳步胜出。回到并发的话题,采用库的方法就是线程模式的思路。在语义层面的扩展就是Rholang、 Pict 或者Vim等移动进程演算(mobile process calculi )的思路。type system保证了你在读一段Rholang程序时,能够看到有多少个进程在进行。同样的,如果你采用 pi calculus 或者 ambient calculus也可以具有同样的优势。3. DAO事件其实是一个并发问题并发性成为一种语法现象。因为它是语法,是可以对代码进行分析并检查各种并发属性的语法。一个非常好的示例是竞争条件(race condition):两个事件是否有可能以任意顺序发生?DAO事件其实是一个并发问题,是竞争条件。如果有对应的语言示,就可以通过语法分析(也称为静态分析),捕获这些错误。即使是熟悉并发问题的老程序员,仍然会不时地搞错,例如用餐哲学家(dining philosophers)或其他类型的问题,所在为并发编写算法是非常困难的。当我在八十年代末和九十年代初期在Rosette工作时,我注意到即使使用非常强大的编程语言,并发编程也是非常困难的事情。不幸的是编程理论停止了二三十年,市场好像卡住了。我惊诧于Javascript一直统治着浏览器平台。我计划开发一个基于Rholang的浏览器语言,使用Rholang从头编写浏览器。4.现在的区块链都错了大多数交易是孤立不相关的。大多数人的财务状况都是彼此分开的。当你去喝咖啡时,地球另一面的人在买菜,你们的交易不相关,在区块链世界,这一点非常重要。如果我们必须对这些交易进行系列化,我们就走进了死胡同。所有的交易都必须经过一个虚拟机。如果那个虚拟机是顺序的(sequential),Transaction将不得不按线性排列,这正是以太坊虚拟机的模式。在这种情况下,无论是DAG还是区块,那都无所谓了。在区块链上使用序列化模型时,不可能有语言层面的并发的显式示。因此无法使用静态分析来获得并发行为,并发都隐藏在幕后。这就像一个干净和纯粹的函数式语言和Java之间的区别。使用与lambda演算接近的函数式语言,你所看到的就是你所获得的。所有执行实际上都在代码。而对于Java来说,程序存在着一堆隐藏的状态:堆栈、线程数以及类似的东西都在代码。 

4,012

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧