BCB6.0中通过ADOQuery读取Access表中的字段名

LPTSTR FiledTypeNames[] =
{
TEXT("ftUnknown"),
TEXT("ftString"),
TEXT("ftSmallint"),
TEXT("ftInteger"),
TEXT("ftWord"),
TEXT("ftBoolean"),
TEXT("ftFloat"),
TEXT("ftCurrency"),
TEXT("ftBCD"),
TEXT("ftDate"),
TEXT("ftTime"),
TEXT("ftDateTime"),
TEXT("ftBytes"),
TEXT("ftVarBytes"),
TEXT("ftAutoInc"),
TEXT("ftBlob"),
TEXT("ftMemo"),
TEXT("ftGraphic"),
TEXT("ftFmtMemo"),
TEXT("ftParadoxOle"),
TEXT("ftDBaseOle"),
TEXT("ftTypedBinary"),
TEXT("ftCursor"),
TEXT("ftFixedChar"),
TEXT("ftWideString"),
TEXT("ftLargeint"),
TEXT("ftADT"),
TEXT("ftArray"),
TEXT("ftReference"),
TEXT("ftDataSet"),
TEXT("ftOraBlob"),
TEXT("ftOraClob"),
TEXT("ftVariant"),
TEXT("ftInterface"),
TEXT("ftIDispatch"),
TEXT("ftGuid"),
TEXT("ftTimeStamp"),
TEXT("ftFMTBcd")
};

int CrnGetTableFields(String strMdbFile, String strTableName, TStrings *pList)
{
if (!pList) return 0;
pList->Clear();

// ADO连接
TADOConnection *con = new TADOConnection(NULL);
TADOQuery *aq = new TADOQuery(NULL);

try
{
if (con->Connected)
con->Connected = false;

// 连接该MDB数据库
con->ConnectionString = String().sprintf(
TEXT("Provider=Microsoft.Jet.OLEDB.4.0;")
TEXT("Data Source=%s;")
TEXT("Persist Security Info=False;"),
strMdbFile.c_str());

try
{
con->Connected = true;
}
catch(...)
{
::MessageBox(0, TEXT("打开数据库失败!"),
TEXT("警告"), MB_OK | MB_ICONWARNING);
}

// 如果连接成功,就通过ADOQuery读取字段
if (con->Connected)
{
aq->Connection = con;

aq->Close();
aq->SQL->Text = String().sprintf(
TEXT("select top 1 * from %s"),
strTableName);

bool bSucceed(true);
try
{
aq->Open();
}
catch(...)
{
bSucceed = false;
::MessageBox(0, TEXT("打开表时发生错误!"),
TEXT("警告"), MB_OK | MB_ICONWARNING);
}

if (bSucceed)
{
int nType;
for (int i = 0; i < aq->FieldDefList->Count; i++)
{
// 63 63 72 75 6E 2E 63 6F 6D
nType = aq->FieldDefList->FieldDefs->DataType;
if (nType > sizeof(FiledTypeNames) / sizeof(FiledTypeNames[0])
|| nType < 0)
nType = 0;

pList->Add(String().sprintf(
TEXT("字段名: %s, 类型:%s"),
aq->FieldDefList->FieldDefs->Name,
FiledTypeNames[nType]));
}

::MessageBox(0, TEXT("获取完毕!"),
TEXT("提示"), MB_OK | MB_ICONWARNING);
}
}
}
__finally
{
delete aq;
delete con;
}
return pList->Count;
}

void __fastcall TForm1::Button1Click(TObject *Sender)
{
// 要打开的数据库文件名
String strMdbFile = TEXT("C:\\ccrun\\Database1.mdb");

CrnGetTableFields(strMdbFile, TEXT("Table1"), Memo1->Lines);
}
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lzksword

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值