65.9K
CodeProject 正在变化。 阅读更多。
Home

访问 dBase 文件

starIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIconemptyStarIcon

1.79/5 (23投票s)

2003年5月3日

2分钟阅读

viewsIcon

104476

downloadIcon

2495

如何访问 dBase 文件。

引言

这个演示项目向您展示了如何使用 ODBC 轻松访问 dBase 文件。

如何创建数据库 DSN

开始 -> 管理工具 -> 数据源 (ODBC) -> 用户 DSN -> 添加

我使用的是 dBase 5.0 的 ODBC 驱动程序。在 microsoft.com 上您可以下载 ODBC-Jet 驱动程序。

您需要使用 Microsoft dBase Driver (*.dbf) 驱动程序创建一个 DSN,命名为 test_dbase,并设置正确的指向文件的路径。如果没有创建 DSN,应用程序将无法找到 dBase 文件!

使用代码

这段代码是项目中最有趣的部分!

#include "stdafx.h"
#include "afxdb.h"

CRecordset  rec;
CDatabase   db;

char sz_statement [2048] = "";
char sz_connect [250] = "";

CString s_name;
CString s_age;

sprintf(sz_connect,"ODBC;DSN=test_dbase;");
//Normally -> ODBC;DSN=DB_Name;UID=UserID;
//PWD=Password;DBALIAS=DB_Alias;
        
try
{
    db.Open(sz_connect);
}
catch(CDBException *e)
{
    e->Delete ();    
}

rec.m_pDatabase = &db;

printf("   Name    |  Age\n");
printf("------------------\n");

strcpy(sz_statement,"SELECT * FROM name_list");

try
{
    rec.Open(CRecordset::forwardOnly, sz_statement);
    while(!rec.IsEOF())
    {
        rec.GetFieldValue("NAME", s_name);
        printf("%-10s | ",s_name);
        
        rec.GetFieldValue("AGE", s_age);
        printf("%-5s\n",s_age);
        
        rec.MoveNext();
    }
    rec.Close();
}
catch (CDBException *e)
{
    e->Delete ();
}

db.Close();

字符串:"ODBC;DSN=test_dbase;" 是数据库的连接字符串。

db.Open(sz_connect);

调用此成员函数来初始化新创建的 CDatabase 对象。在使用它来构造 recordset 对象之前,必须初始化您的数据库对象。

rec.m_pDatabase = &db;

包含一个指向 CDatabase 对象的指针,通过该对象 recordset 连接到数据源。

rec.Open(CRecordset::forwardOnly, sz_statement);

您必须调用此成员函数来运行 recordset 定义的查询。在调用 Open 之前,您必须构造 recordset 对象。

rec.GetFieldValue("NAME", s_name);

调用此成员函数来检索当前记录中的字段数据。您可以按名称或索引查找字段。您可以将字段值存储在 CString 对象中。

rec.MoveNext();

调用此成员函数将下一个 rowset 中的第一条记录设为当前记录。如果您没有实现批量行获取,则您的记录集行集大小为 1,因此 MoveNext 只是移动到下一条记录。

rec.Close();

调用此成员函数来关闭 recordset

db.Close();

调用此成员函数以断开与数据的连接

历史

  • 2003年1月24日 - 第一个版本完成...
  • 2003年5月15日 - 第二版本 => 修改了一些文本并修改了代码
  • 2003年7月2日 - 大幅重写
© . All rights reserved.