数据库基本概念和 ADO 编程创建数据库及数据表

本文深入探讨数据库、数据库管理系统和数据库编程技术的概念,重点介绍ADO(ActiveX Data Objects)及其扩展库ADOX。通过ADOX,可以创建数据库和数据表,而ADO则用于创建数据库中的表。此外,还讲解了常见的SQL语句,以及如何使用_ConnectionPtr和_RecordsetPtr接口开发ACCESS数据库,提供了一系列实用示例和操作技巧。
摘要由CSDN通过智能技术生成

目录

一、数据库、数据库管理系统、数据区编程技术概念及区别

二、ADO 和 ADOX 概念及区别

三、ADO 的结构

三、用 ADOX 对象创建数据库

四、用 ADO创建数据库中的表

五、常见的 SQL 语句

六、使用_ConnectionPtr接口开发ACCESS数据库

七、使用_RecordsetPtr接口开发ACCESS数据库


一、数据库、数据库管理系统、数据库编程技术概念及区别

数据库(DataBase,DB):是以一定的组织方式将相关的数据组织在一起,存放在计算机外存储器上,能为多个用户共享的与应用程序彼此独立的一组关系数据的集合。可以简单理解为:存放数据的仓库。

数据管理系统(DataBase Management System,DBMS):是一种操纵和管理数据库的软件系统。DBMS 是用于描述、管理和维护数据库的程序系统,是数据库系统的核心组成部分。它建立在操作系统的基础上,对数据库进行统一的管理和控制。其功能包括数据库定义、数据库管理、数据库建立和维护、与操作系统通信等。通常,数据库管理系统能够方便用户快速地建立、维护、修改、检索和删除数据库中的数据。可以简单的理解为:“管理”数据库的应用软件,实现“增删改查”如 SQL、ACCESS。

数据库编程技术:Visual C++中提供了 4 中不同的技术来使应用程序访问数据库,即 DAO(Data Access Object)、ODBC(Open Database Connectivy)、OLE DB(Object Link and Embedding DataBase)和 ADO(ActiveX Data Objects)。其中最简单的是 ODBC,最常用的是 ADO。ODBC 编程技术可以简单的理解为:不通过 DBMS 访问数据库的标准接口,数据库厂商按照接口标准开发的一套软件,这套软件叫 ODBC 驱动,电脑安装驱动后就可以使用 C++语言管理数据库。

二、ADO 和 ADOX 概念及区别

ADO是Microsoft 最新推出的数据库访问的高层软件接口。它和Microsoft以前的数据库访问接口DAO、ODBC相比具有更大的灵活性,使用也更方便,开发效率大为提高。ADO 访问数据库是通过访问 OLE DB 数据提供程序来进行的,提供了一种对 OLE DB 数据提供程序的简单高层访问接口。ADO 技术简化了 OLE DB 的操作,OLE DB 的程序中使用了大量的通用对象模型(COM)接口,而 ADO 封装了这些接口,因此,ADO 是一种高层的访问技术。

ADO 访问数据源的特点:

  • 易于使用。这是 ADO 技术最重要的一个特征。由于 ADO 是高层应用,所以相对于 OLE DB 或者 ODBC 来说,它具有面向对象的特征。
  • 高速访问数据源。由于 ADO 技术基于 OLE DB,因而它也继承了 OLE DB 访问数据库的高速性。到目前为止,ADO 是目前最快的数据库访问技术。
  • 可以访问不同数据源。ADO 技术可以访问包括关系数据库和菲关系数据库在内的所有文件系统,此特点使应用程序具有灵活性和通用性。
  • 可以用于 Microsoft ActiveX 页。ADO 技术可以以 ActiveX 控件的形式出现,因此可以被用于 Microsoft ActiveX 页,此特征可简化 web 页的编程。
  • 程序占用内存少。由于 ADO 是基于组件对象模型的访问技术,因而用 ADO产生的应用程序占用内存少。

ADOX是核心ADO对象的扩展库。它提供的附加对象可用于创建、修改和删除模式对象,如表和过程。要使用ADOX,则应建立对ADOX类型库的引用。ADOX库文件名为 Msadox.dll。

通俗地讲,ADO是访问数据库的一种接口,可以使用它方便地进行数据库编程。而ADOX是微软对ADO功能的扩展,比如:可以ADOX创建数据库(而ADO没有创建数据库的功能)。

三、ADO 的结构

要系统学习 ADO 编程可以参考 Microsoft提供的编程指南:https://docs.microsoft.com/zh-cn/office/client-developer/access/desktop-database-reference/ado-programmer-s-guide

ADO 中包含了一系列的对象与集合,ADO 数据对象模型结构如图所示。

ADO 结构图

从上图可以看出 ADO 中包含了 7 个对象和 4 个集合,下表分别给出了各个对象与集合的功能。

ADO 对象的功能描述
对象 说明
链接对象(Connection) 用于与数据源的链接以及处理一些命令和事物
命令对象(Command) 用于处理传递给数据源的命令
记录集对象(Recordset) 用于处理数据的记录集,如获取和修改数据
域对象(Field) 用于表示记录集中的列信息,包括列值以及其他信息
参数对象(Parameter) 用于对传递给数据源的命令赋参数值
属性对象(Property) 用于操作在 ADO 中使用的其他对象的详细属性
错误对象(Error) 用于获得连接对象所发生的详细错误信息
ADO 集合的功能描述
集合 说明
域集合(FIelds) 记录集对象中包含了域对象的集合,域对象的集合中包含了所有代表记录集中每列的域对象
参数集合(Parameters) 命令对象中包含了参数对象的集合,参数集合中包含了应用于命令对象的所有参数对象。
属性集合(Properties) 在链接对象、命令对象、记录集对象和域对象中都包含了属性对象的集合,属性对象的集合中包含了这些对象的所有特性
错误集合(Errors) 连接对象中包含了错误对象的集合,错误集合中包含了再一次连接数据源时所产生的所有错误对象

三、用 ADOX 对象创建数据库

请参考博主文章:https://blog.csdn.net/qq_41291253/article/details/103522820

四、用 ADO创建数据库中的表

我们一般用ADOX创建数据库,然后再用ADO创建数据库的表。

例程CREATE_DB_AND_TABLE演示如何使用ADO创建ACCESS数据库的表。

打开VC++ 6.0,新建一个基于对话框的工程CREATE_DB_AND_TABLE。在对话框IDD_CREATE_DB_AND_TABLE_DIALOG中添加如下控件:  

 

控件名称

 

ID

 

用途

 

编辑框

 

IDC_DBNAME

 

输入数据库名称

 

按钮

 

IDC_BTN_CREATE

 

创建数据库

 

编辑框

 

IDC_TABLENAME

 

输入表名

 

按钮

 

IDC_BTN_CREATE_TABLE

 

创建表

使用ClassWizard给两个编辑框创建CString变量:  

 

编辑框

 

CString变量

 

编辑框IDC_DBNAME

 

m_dbName

 

编辑框IDC_TABLENAME

 

m_tableName

创建数据库:双击IDC_BTN_CREATE按钮,并编辑OnBtnCreate()函数如下:

void CADOXCreateDatabaseDlg::OnBtnCreate() 
{
    UpdateData(TRUE);

    CString str;
    str = "d://"+ m_dbName +".mdb";

    if(PathFileExists(str))
    {
       CString strTemp;
       strTemp.Format("%s已存在!", str);
       AfxMessageBox(strTemp);
       return;
    }

    _CatalogPtr m_pCatalog = NULL;
    CString DBName = "Provider = Microsoft.JET.OLEDB.4.0; Data source = ";
    DBName = DBName + str;

    try
    {
       m_pCatalog.CreateInstance(__uuidof(Catalog));
       m_pCatalog->Create(_bstr_t((LPCTSTR)DBName));
    }
    catch(_com_error &e)
    {
       AfxMessageBox(e.ErrorMessage());
       return;
    }   
}

以上代码在第三部分例程ADOXCreateDatabase中已经详细叙述,请点击: https://blog.csdn.net/qq_41291253/article/details/103522820 查看

创建数据表:双击IDC_BTN_CREATE_TABLE按钮,并编辑OnBtnCreateTable()函数如下:

void CCREATE_DB_AND_TABLEDlg::OnBtnCreateTable() 
{
    //先判断表名编辑框是否为空
    UpdateData(TRUE);
    if(!m_tableName.IsEmpty())
    {
       ADOX::_CatalogPtr m_pCatalog = NULL;
       ADOX::_TablePtr m_pTable = NULL;

       CString str;
       str="d://"+ m_dbName +".mdb";
       CString DBName = "Provider = Microsoft.JET.OLEDB.4.0; Data source =";
       DBName = DBName + str;

       //这段代码先检查表是否已经存在,如果表已经存在,不再创建,直接返回。
       try
       {
           m_pCatalog.CreateInstance(__uuidof(ADOX::Catalog));
           m_pCatalog->PutActiveConnection(_bstr_t(DBName));

           int tableCount = m_pCatalog->Tables->Count;
           int i = 0;
           while(i<tableCount)
           {
              m_pTable = (ADOX::_TablePtr)m_pCatalog->Tables->GetItem((long)i);
              CString tableName = m_pTable->Name;

              if(tableName == m_tableName)
              {
                  AfxMessageBox("该表已经存在!");
                  return;
              }
              i++;
           }
       }
       catch(_com_error &e)
       {
           AfxMessageBox(e.Description());
           return;
       }

       //创建表
       ADODB::_ConnectionPtr m_pConnection;
       _variant_t RecordsAffected;

       //此段代码和数据库建立链接
       try
       {
           m_pConnection.CreateInstance(__uuidof(ADODB::Connection));     
           m_pConnection->Open(_bstr_t(DBName), "", "", ADODB::adModeUnknown);
       }
       catch(_com_error e)
       {
           CString errormessage;
           errormessage.Format("连接数据库失败!/r错误信息:%s", e.ErrorMessage());
           AfxMessageBox(errormessage);
           return;
       }

       //此段代码用来创建表格
       try
       {
           CString strCommand;

           //执行SQL命令:CREATE TABLE创建表格
           //该表包含三个字段:记录编号 INTEGER,姓名 TEXT,出生年月 DATETIME
           //SQL语言中的create table语句被用来建立新的数据库表格。
           //create table语句的使用格式如下:
           //create tablename (column1 data type,column2 data type,column3 data type);
           //如果用户希望在建立新表格时规定列的限制条件,可以使用可选的条件选项
     
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值