cvi通过ODBC连接Microsoft Access

1、包含<windows.h> <odbcinst.h> “cvi_db.h” 文件包含在工程头文件中,加载odbccp32.lib,该文件在.\national instruments\cvi90\sdk\lib\msvc路径中。
2、创建数据源

 SQLConfigDataSource (NULL, 
    					ODBC_ADD_SYS_DSN, 
    					"Microsoft Access Driver (*.mdb)\0", 				          
    					"DSN=ATS_DATA_DSN\0DESCRIPTION=ATS\0" "DBQ=..\\db\\systemmanage.mdb\0"); 

其中四个参数的用法如下:
BOOL SQLConfigDataSource(HWND hwndParent, UINT fRequest, LPCSTR IpszDriver, LPCSTR IpszAttributes);
●参数hwndPwent是父级窗口句柄。如果句柄为NULL,将不会显示一些有关的对话框。如果参数 IpszAttributes提供的信息不够完善,在创建过程中就会出现对话框要求用户提供相应信息。
●参数fRequest可以设置为下面的数值之一:
ODBC_ADD_DSN: 增加_个新数据源
ODBC_CONHG_DSN: 配置(修改)一个已经存在的数据源
ODBC_REMOVE_DSN: 删除一个已经存在的数据源
ODBC_ADD_SYS_DSN: 增加一个新的系统数据源
ODBC_CONFIG_SYS_DSN: 更改一个已经存在的系统数据源
ODBC_REMOVE_SYS_DSN: 删除一个已经存在的系统数据源
●参数lpszDriver是数据库引擎名称,可以参见ODBC管理器中对ODBC驱动程序的描述。
比如要加载的是Excel数据库,那么数据库引擎名称就为Microsoft Excel Driver(*.xls) ;
SQLserver数据库引擎名称就为"SQL Server"。
●参数lpszAttributes为一连串的"KeyName=value"字符串,每两个KeyName值之间用\0"“字符隔开(或者\0隔开即可)。KeyName主要是新数据源缺省的驱动程序注册说明,其中最主要的关键字是"DSN”(新数据源的名称)和"DBQ"(数据源的地址),其余关键字则根据不同的数据源有不同要求。关于lpszAttributes参数的具体设置,详细可以参考Windows系统目录下帮助文件Odbcjtn.hlp主题目录标签中的"ODBC API函数改变|SQLConfigDatasource"条目。

3、连接数据库

hdbc = DBConnect ("DSN=ATS_DATA_DSN");  

4、选择数据表

DBSetDatabase(hdbc, "..\\db\\test.mdb");  

5、往数据表中增加一行记录
可以调用DBCreateRecord (hstat)函数和DBPutRecord (hstat)函数的同时使用来创建新的记录。在这里需要注意的是,如果单独使用DBPutRecord (hstat)函数会将原有的记录覆盖,而DBCreateRecord (hstat)函数和DBPutRecord (hstat)函数的同时使用则是在原有记录的后面创建新的记录。当对数据库操作结束后,可以调用DBDeactivateSQL (hstat )函数断开与数据库的连接,并释放相应的资源。

hstat = DBActivateSQL (hdbc," SELECT * FROM ActivityLog");    	//执行SQL语句	,选择ActivityLog表		
DBCreateRecord(hstat);  		//创建新记录
resCode =DBPutColChar(hstat,1,LoginDateTime,"");       //往对应列中添加数据
resCode =DBPutColChar(hstat,2,LogoutDateTime,"");
resCode =DBPutColChar(hstat,3,user,"");
resCode =DBPutColChar(hstat,4,ActivityLog,"");
DBPutRecord(hstat);           //提交新记录
DBDeactivateSQL(hstat);   //取消选择
DBDisconnect (hdbc); 		//关闭数据库连接

6、在数据库中查找相关记录
下面要做的就是与数据表中的相应字段进行绑定,这样我们才能在相应字段下面添加内容,比如数据表中建立了“sysOrUser”,“tiGroupStatus”以及“activeStatus”三个字段,我们想在这三个字段下添加类容,那么就需要对于这三个字段进行绑定,代码如下:

  DBSetDatabase(hdbc, "..\\db\\systemmanage.mdb");
  sprintf(sqlString, "SELECT * FROM TiGroup WHERE SysOrUser = '%s'",label); 
  hstat = DBActivateSQL(hdbc, sqlString);//查找 SysOrUser  = label 的内容

//根据数据类型不一样调用不同的方法回去

   DBBindColChar (hstat,1,32,sysOrUser,&releaseStatus,"");
   DBBindColChar (hstat,2,MAX_TIGROUPNAME_LEN+1,tiGroup,&tiGroupStatus,"");
   DBBindColInt(hstat,3,&active,&activeStatus);
   
   //allTiGroupNum = DBNumberOfRecords (hstat);

成功与相应字段进行绑定后,则可以读取或者是添加我们所需要的内容。我们可以通过DBFetchNext(hstat)函数来查找指定的记录;

  while(DBFetchNext(hstat) != DB_EOF)
    {
    
    }

DBDeactivateSQL(hstat);

7、带参数查询的另一种方式
1)带参数查询
1>对于带参数的数据库查询,首先准备执行SQL查询声明

hstat = DBPrepareSQL (hdbc, “SELECT * FROM userdata WHERE UserName = ?”); 

2)创建一个字符型参数预备查询方式

resCode = DBCreateParamChar (hstat, “”, DB_PARAM_INPUT, name, MAX_USERNAME_LEN); 

3)执行带参数的SQL查询

resCode = DBExecutePreparedSQL (hstat); 

//找下一个记录

resCode = DBFetchNext (hstat); 

//意味着在数据库中成功找到UserName = name的记录

if (resCode == DB_SUCCESS) 
{

} 
resCode = DBClosePreparedSQL (hstat);

附上相关操作命令以及说明
Initialize Threading DBInit
Connection
Open New Connection ———————————DBConnect
Set Default Attribute ———————————DBSetAttributeDefault
Close and Discard Connection ——————–DBDisconnect
Set Database ——————————————–DBSetDatabase
Automatic SQL (maps)
Begin Map ————————————————DBBeginMap
Map Column to String ——————————–DBMapColumnToChar
Map Column to Short Integer ——————— DBMapColumnToShort
Map Column to Integer —————————— DBMapColumnToInt
Map Column to Long Long ————————-DBMapColumnToLongLong
Map Column to Float ——————————-DBMapColumnToFloat
Map Column to Double —————————-DBMapColumnToDouble
Map Column to Binary ——————————-DBMapColumnToBinary
Create Table From Map —————————-DBCreateTableFromMap
Activate Map ——————————————–DBActivateMap
Deactivate Map —————————————- DBDeactivateMap
Explicit SQL
Immediate SQL Statement ————————-DBImmediateSQL
Activate SQL Statement—————————– DBActivateSQL
Bind Column to String ——————————-DBBindColChar
Bind Column to Short Integer ———————DBBindColShort
Bind Column to Integer —————————–DBBindColInt
Bind Column to Long Long————————–DBBindColLongLong
Bind Column to Float———————————- DBBindColFloat
Bind Column to Double——————————-DBBindColDouble
Bind Column to Binary ——————————-DBBindColBinary
Deactivate SQL Statement————————–DBDeactivateSQL
Fetch Records
Fetch Next Record————————————–DBFetchNext
Fetch Previous Record —————————-DBFetchPrev
Fetch Random Record ——————————-DBFetchRandom
Insert/Delete/Update Records
Create New Record ———————————-DBCreateRecord
Delete Record —————————————-DBDeleteRecord
Put Record —————————————–DBPutRecord
Cancel Record Changes —————————————–DBCancelRecordChanges
Batch Update —————————————–DBUpdateBatch
Information Functions
Data Source Information
Available Sources—————————————– DBSources
Available Databases —————————————–DBDatabases
Available Tables—————————————– DBTables
Indexes Information—————————————– DBIndexes
Primary Keys Information—————————————– DBPrimaryKeys
Foreign Keys Information —————————————–DBForeignKeys
Open Schema—————————————– DBOpenSchema
SELECT Information
Number of Records—————————————– DBNumberOfRecords
Number Of Columns —————————————–DBNumberOfColumns
Column Name—————————————– DBColumnName
Column Width —————————————–DBColumnWidth
Column Type DBColumnType
Set Column Attribute —————————————–DBSetColumnAttribute
Get Column Attribute —————————————–DBGetColumnAttribute
Number of Modified Records———————————DBNumberOfModifiedRecords
Transactions
Begin Transaction—————————————– DBBeginTran
Commit Transaction—————————————– DBCommit
Rollback Transaction—————————————– DBRollback
Errors
Error Code DBError
Warning Code ——————————————————–DBWarning
Native Error Code————————————————- DBNativeError
Error/Warning Text ———————————————-DBErrorMessage
Freeing Resources
Free Memory ——————————————————–DBFree
Compatibility
Get Toolkit Version ———————————————-DBGetSQLToolkitVersion
Set Backward Compatibility ———————————-DBSetBackwardCompatibility
Advanced Functions
Advanced Connections
New Connection —————————————————DBNewConnection
Set Connection Attribute —————————————–DBSetConnectionAttribute
Get Connection Attribute —————————————–DBGetConnectionAttribute
Open Connection —————————————————DBOpenConnection
Close Connection —————————————————DBCloseConnection
Discard Connection ————————————————DBDiscardConnection
Advanced Statements
New SQL Statement ————————————————DBNewSQLStatement
Set Statement Attribute ——————————————DBSetStatementAttribute
Get Statement Attribute ——————————————DBGetStatementAttribute
Open SQL Statement ———————————————DBOpenSQLStatement
More Results ———————————————————-DBMoreResults
Get Records as Array
Get Records as Array ———————————————-DBGetVariantArray
Get Record Array Element —————————————DBGetVariantArrayValue
Get Record Array Column —————————————DBGetVariantArrayColumn
Free Variant Array ————————————————DBFreeVariantArray
Close SQL Statement——————————————- DBCloseSQLStatement
Discard SQL Statement ——————————————DBDiscardSQLStatement
SQL with Parameters
Prepare SQL Statement —————————————–DBPrepareSQL
Create Parameters
Create Integer Parameter ————————————–DBCreateParamInt
Create Short Integer Parameter ——————————–DBCreateParamShort
Create Long Long Parameter———————————- DBCreateParamLongLong
Create Float Parameter —————————————–DBCreateParamFloat
Create Double Parameter ————————————–DBCreateParamDouble
Create String Parameter —————————————–DBCreateParamChar
Create Binary Parameter —————————————–DBCreateParamBinary
Set Parameters
Set Parameter to Integer ——————————————DBSetParamInt
Set Parameter to Short ——————————————DBSetParamShort
Set Parameter to Long Long ————————————DBSetParamLongLong
Set Parameter to Float —————————————–DBSetParamFloat
Set Parameter to Double—————————————– DBSetParamDouble
Set Parameter to String—————————————– DBSetParamChar
Set Parameter to Binary—————————————– DBSetParamBinary
Set Parameter to Variant —————————————–DBSetParamVariant
Execute Prepared SQL—————————————– DBExecutePreparedSQL
Set Parameter Attribute—————————————– DBSetParamAttribute
Get Parameter Attribute —————————————–DBGetParamAttribute
Get Parameter Values
Get Parameter as Integer—————————————– DBGetParamInt
Get Parameter as Short—————————————– DBGetParamShort
Get Parameter as Long Long —————————————–DBGetParamLongLong
Get Parameter as Float —————————————–DBGetParamFloat
Get Parameter as Double—————————————– DBGetParamDouble
Get Parameter as Sting—————————————– DBGetParamChar
Get Parameter as String Buffer ——————————–DBGetParamCharBuffer
Get Parameter as Binary —————————————–DBGetParamBinary
Get Parameter as Binary Buffer——————————- DBGetParamBinaryBuffer
Get Parameter as Variant—————————————– DBGetParamVariant
Close Prepared SQL—————————————– DBClosePreparedSQL
Put Values Directly to Record
Put String in Record—————————————– DBPutColChar
Put Short Integer in Record—————————————– DBPutColShort
Put Integer in Record—————————————– DBPutColInt
Put Long Long in Record —————————————–DBPutColLongLong
Put Float in Record—————————————– DBPutColFloat
Put Double in Record—————————————– DBPutColDouble
Put Null in Record—————————————– DBPutColNull
Put Binary Data in Record—————————————– DBPutColBinary
Put Variant in Record—————————————– DBPutColVariant
Get Values Directly from Record
Get String from Record—————————————– DBGetColChar
Get String Buffer—————————————– DBGetColCharBuffer
Get Short from Record—————————————– DBGetColShort
Get Integer from Record—————————————– DBGetColInt
Get Long Long from Record—————————————– DBGetColLongLong
Get Float from Record—————————————– DBGetColFloat
Get Double from Record—————————————– DBGetColDouble
Get Binary Data from Record—————————————– DBGetColBinary
Get Binary Buffer—————————————– DBGetColBinaryBuffer
Get Variant from Record—————————————– DBGetColVariant
Obsolete or Deprecated
Refresh Parameters—————————————– DBRefreshParams
Clear Parameter—————————————– DBClearParam

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值