首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    ODBC(Open Database Connectivity,开放数据库互连)

    ODBC(Open Database Connectivity,开放数据库互连)是微软公司开放服务结构(WOSA,Windows Open Services Architecture)中有关数据库的一个组成部分,它建立了一组规范,并提供了一组对数据库访问的标准API(应用程序编程接口)。这些API利用SQL来完成其大部分任务。ODBC本身也提供了对SQL语言的支持,用户可以直接将SQL语句送给ODBC。 一个基于ODBC的应用程序对数据库的操作不依赖任何DBMS,不直接与DBMS打交道,所有的数据库操作由对应的DBMS的ODBC驱动程序完成。也就是说,不论是FoxPro、Access还是Oracle数据库,均可用ODBC API进行访问。由此可见,ODBC的最大优点是能以统一的方式处理所有的数据库。 一个完整的ODBC由下列几个部件组成: 应用程序(Application)。 ODBC管理器(Administrator)。该程序位于Windows 95控制面板(Control Panel)的32位ODBC内,其主要任务是管理安装的ODBC驱动程序和管理数据源。 驱动程序管理器(Driver Manager)。驱动程序管理器包含在ODBC32.DLL中,对用户是透明的。其任务是管理ODBC驱动程序,是ODBC中最重要的部件。 ODBC API。 ODBC 驱动程序。是一些DLL,提供了ODBC和数据库之间的接口。 数据源。数据源包含了数据库位置和数据库类型等信息,实际上是一种数据连接的抽象。 各部件之间的关系如图下图所示: 应用程序要访问一个数据库,首先必须用ODBC管理器注册一个数据源,管理器根据数据源提供的数据库位置、数据库类型及ODBC驱动程序等信息,建立起ODBC与具体数据库的联系。这样,只要应用程序将数据源名提供给ODBC,ODBC就能建立起与相应数据库的连接。 在ODBC中,ODBC API不能直接访问数据库,必须通过驱动程序管理器与数据库交换信息。驱动程序管理器负责将应用程序对ODBC API的调用传递给正确的驱动程序,而驱动程序在执行完相应的操作后,将结果通过驱动程序管理器返回给应用程序。 在访问ODBC数据源时需要ODBC驱动程序的支持。用Visual C++ 5.0安装程序可以安装SQL Server、 Access、 Paradox、 dBase、 FoxPro、 Excel、 Oracle 和Microsoft Text等驱动程序.在缺省情况下,VC5.0只会安装SQL Server、 Access、 FoxPro和dBase的驱动程序.如果用户需要安装别的驱动程序,则需要重新运行VC 5.0的安装程序并选择所需的驱动程序。

    01

    收集3:所有文件格式

    A 对象代码库文件 AAM Authorware shocked文件 AAS Authorware shocked包 ABF Adobe二进制屏幕字体 ABK CorelDRAW自动备份文件 ABS 该类文件有时用于指示一个摘要(就像在一篇有关科学方面的文章的一个摘要或概要,取自abstract) ACE Ace压缩档案格式 ACL CorelDRAW 6键盘快捷键文件 ACM Windows系统目录文件 ACP Microsoft office助手预览文件 ACR 美国放射医学大学文件格式 ACT Microsoft office助手文件 ACV OS/2的驱动程序,用于压缩或解压缩音频数据 AD After Dark屏幕保护程序 ADA Ada源文件(非-GNAT) ADB Ada源文件主体(GNAT);HP100LX组织者的约定数据库 ADD OS/2用于引导过程的适配器驱动程序 ADF Amiga磁盘文件 ADI AutoCAD设备无关二进制绘图仪格式 ADM After Dark多模块屏幕保护;Windows NT策略模板 ADP FaxWork用于传真调制解调器的交互安装文件;Astound Dynamite文件 ADR After Dark随机屏幕保护;Smart Address的地址簿 ADS Ada源文件说明书(GNAT) AFM Adobe的字体尺度 AF2,AF3 ABC的FlowChat文件 AI Adobe Illustrator格式图形 AIF,AIFF 音频互交换文件,Silicon Graphic and Macintosh应用程序的声音格式 AIFC 压缩AIF AIM AOL即时信息传送 AIS ACDSee图形序列文件;Velvet Studio设备文件 AKW RoboHELP的帮助工程中所有A-关键词 ALAW 欧洲电话音频格式 ALB JASC Image Commander相册 ALL 艺术与书信库 AMS Velvet Studio音乐模块(MOD)文件;Extreme的Tracker模块文件 ANC Canon Computer的调色板文件,包含一系列可选的颜色板 ANI Windows系统中的动画光标 ANS ANSI文本文件 ANT SimAnt For Windows中保存的游戏文件 API Adobe Acrobat使用的应用程序设计接口文件 APR Lotus Approach 97文件 APS Microsoft Visual C++文件 ARC LH ARC的压缩档案文件 ARI Aristotle声音文件 ARJ Robert Jung ARJ压缩包文件 ART Xara Studio绘画文件;Canon Crayola美术文件;Clip Art文件格式;另一种光线跟踪格式;AOL使用的用Johnson—Grace压缩算法压缩的标记文件 ASA Microsoft Visual InterDev文件 ASC ASCⅡ文本文件;PGP算法加密文件 ASD Microsoft Word的自动保存文件;Microsoft高级流媒体格式(microsoft advanced streaming FORMat,ASF)的描述文件;可用NSREX打开 Velvet Studio例子文件 ASE Velvet Studio采样文件 ASF Microsoft高级流媒体格式文件 ASM 汇编语言源文件,Pro/E装配文件 ASO Astound Dynamite对象文件 ASP 动态网页文件;ProComm Plus安装与连接脚本文件;Astound介绍文件 AST Astound多媒体文件;ClarisWorks“助手”文件 ASV DataCAD自动保存文件 ASX Cheyenne备份脚本文件;Microsoft高级流媒体重定向器文件,视频文件 ATT AT< Group 4位图文件 ATW 来自个人软件的Any Time Deluxe For Windows个人信息管理员文件 AU Sun/NeXT/DEC/UNIX声音文件;音频U-Law(读作“mu-law”)文件格式 AVB Computer Associates Inoculan反病毒软件的病毒感染后文件 AVI Microsoft Audio Video Interleave电影格式 AVR Audio Visual Research文件格式 AVS 应用程序可视化格式 AWD FaxVien文档 AWR Telsis数字储存音频文件扩展名格式 Axx ARJ压缩文件的分包序号文件,用于将一个大文件压至几个小的压缩包中(xx取01-99的数字) A3L Authorware

    01

    Python学习笔记整理(十六) 类的设计

    如何使用类来对有用的对象进行建模? 一、Python和OOP Python和OOP实现可以概括为三个概念。 继承     继承是基于Python中属性查找(在X.name表达式中) 多态     在X.method方法中,method的意义取决于X的类型(类) 封装     方法和运算符实现行为,数据隐藏默认是一种惯例。 封装指的是在Python中打包,也就是把实现的细节隐藏在对象接口之后。这并不代表有强制的私有性。封装可以让对象接口的现实 出现变动时,不影响这个对象的用户。 1、不要通过调用标记进行重载 不要在同一个类中对同一个方法名定义两次,后面的会覆盖前面,也不要对对象类型进行测试。应该把程序代码写成预期的对象接口。而不是特定类型的数据类型。 2、类作为记录 通过类的实例来创建多个记录。 3、类和继承:是“一个”关系 (is a) 从程序员的角度来看,继承是由属性点号运算启动的,由此触发实例,类以及任何超类中变量名搜索。 从设计师的角度看,继承是一种定义集合成员关系的方式:类定义了一组内容属性,可由更具体的集合(子类)继承和定制。 子类和超类的继承是1对1的关系. PizzaRobot是一种Chef,Chef是一种Employee.以OOP术语来看,我们称这些关系为“是一个连接”(is a):机器人是个主厨,主厨是一个员工。 class Employee:         def __init__(self,name,salary=0):                 self.name=name                 self.salary=salary         def giveRaise(self,percent):                 self.salary=self.salary+(self.salary*percent)         def work(self):                 print self.name,"does stuff"         def __repr__(self):                 return "<Employee:name=%s,salary=%s>" % (self.name,self.salary) class Chef(Employee):         def __init__(self,name):                 Employee.__init__(self,name,5000)         def work(self):                 print self.name,"make food" class Server(Employee):         def __init__(self,name):                 Employee.__init__(self,name,40000)         def work(self):                 print self.name,"interface with customer" class PizzaRobot(Chef):            def __init__(self,name):#有点想不明白,既然继承就够了,为什么还要在这里构造                 Chef.__init__(self,name)    #Chef.__init__(self,name) =》Employee.__init__(self,name,5000)=>__init__(self,name,salary=0)         def work(self):                 print self.name,"make pizza" if __name__=='__main__':         bob=PizzaRobot('bob')         print bob         bob.work()         bob.giveRaise(0.20)         print bob;print # python employees.py   <Employee:name=bob,salary=5000> bob make pizza <Employee:name=bob,salary=6000.0> 理解有问题的地方 class PizzaRobot(Chef):            def __init__(self,name):#有点想不明白,既然继承就够了,为什么还要在这里构造,下面拿掉这里做对比

    01
    领券