From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.



怎样通过CVI编程实现对于数据库的访问?



主要软件:
主要软件版本: 2009 SP1
主要软件修正版本: N/A
次要软件: LabWindows/CVI Run-Time Engine

问题:     
        ODBC,英文全称为Open Database Connect,即开放数据库互连。它实际上是一个数据访问库,是联系应用程序和数据库系统之间的桥梁。ODBC独特之处就在于可以避免应用程序随数据库的改变而改变,即具有良好的数据库独立性。这也是ODBC技术被广泛使用的最重要的原因之一。SQL是Strcuctured Query Language的缩写,即结构化查询语言,用它可以实现对于数据库的数据更新、数据获取等交互式的操作。在利用CVI进行测试系统软件设计时,可以将对于被测设备的各项测试指令存入到数据库中,从而实现测试流程与测试软件的相对独立,而且在测试过程中的一些测试信息、测试结果也可存入数据库中,便于查询,这样大大增强了测试软件的灵活性和可移植性。
那么如何利用CVI实现对于数据库的访问呢?


解答:          
        首先,需要安装针对CVI的SQL的工具包,目前常用的是SQL 2.05。此外,图1中所示的SQL工具包的安装路径必须是CVI所在的安装目录,否则会出现各种奇怪的错误。
 
   
图1 SQL工具包安装          
         然后,安装结束后,会在CVI的安装目录下找到cvi_db.fp文件,如图2所示。其中包含了对于数据库操作的所有函数,我们可以通过使用相关的函数来实现对于数据库的操作,函数结构形式如图3所示,我们可以根据函数分类查找相应函数,方便的使用相关函数来实现对于数据库的操作。 
    
图2 找到cvi_db.fp文件
 
图3 数据操作函数结构形式
        最后就是通过调用cvi_db.fp文件提供的函数来实现对于数据库的操作。对于数据库的变成流程如图4所示。
       1、需要实现与数据源建立连接,对于与数据源建立连接的方式通常有两种:一种就是需要手动配置数据源,这种方式操作起来不灵活,在此就不做介绍;另外一种方式就是通过指定数据源路径的方式来实现,这种方式不需要手动配置数据源,操作起来比较方便,所以本文采用这种方式。基本代码如下:
           GetProjectDir (dirTemp);//获取工程目录路径
           sprintf(DBConStr,"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s\\%s;Persist Security Info=False",dirTemp,"Simon.mdb");//获取数据源所在路径
           dBHandle = DBConnect (DBConStr);//建立数据源连接
       在获取到数据源的路径后,即通过调用DBConnect()函数就可以与数据源建立连接。
 
 

图4 数据库操作流程
       2、在与数据源建立连接后,则需要与数据源中所建立的数据表进行连接,这样才能完成对于数据表的读或者是写操作。代码如下:
        Fmt(SQLCommand, "%s%s%s","SELECT * FROM abc WHERE        Name='",user_name,"'"); //使用的是SQL语言
        fileHandle= DBActivateSQL(dBHandle,SQLCommand);//与数据库中的表建立连接
        if(fileHandle<=0) return(err_report(1));
       3、代码运行到此,如果能顺利执行,则说明已经与数据源中的数据表成功建立了连接,下面要做的就是与数据表中的相应字段进行绑定,这样我们才能在相应字段下面添加内容,比如数据表中建立了“username”,“password”以及“score”三个字段,我们想在这三个字段下添加类容,那么就需要对于这三个字段进行绑定,代码如下:
                                                               
        if((DBBindColChar (fileHandle, 1, 32 ,username,&dbstatus[1], ""))!=DB_SUCCESS)
        return(err_report(1));//对相应字段进行绑定
        if((DBBindColChar (fileHandle,2, 32, password, &dbstatus[2], ""))!=DB_SUCCESS)
        return(err_report(1));
        if((DBBindColInt (fileHandle, 3, &score,&dbstatus[3]))!=DB_SUCCESS)
        return(err_report(1));
       4、成功与相应字段进行绑定后,则可以读取或者是添加我们所需要的内容。我们可以通过DBFetchNext(fileHandle)函数来查找指定的记录;同时可以调用DBCreateRecord (fileHandle)函数和DBPutRecord (fileHandle)函数的同时使用来创建新的记录。在这里需要注意的是,如果单独使用DBPutRecord (fileHandle)函数会将原有的记录覆盖,而DBCreateRecord (fileHandle)函数和DBPutRecord (fileHandle)函数的同时使用则是在原有记录的后面创建新的记录。
      5、当对数据库操作结束后,可以调用DBDeactivateSQL (fileHandle)函数断开与数据库的连接,并释放相应的资源。
      至此,对于数据库的操作基本完毕。有关CVI中对于数据库的更进一步的操作,可以参考有关函数的说明文档。


相关链接:

附件:
DataBase with CVI.rar




报告日期: 12/01/2011
最近更新: 12/01/2011
文档编号: 5S04BJL9