ADO中如何得到_RecordsetPtr所取得记录集的字段个数?

alornwolf 2002-11-29 03:59:37
如题!!!
...全文
454 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
fingerfox 2002-11-29
  • 打赏
  • 举报
回复
rs->Fields->GetCount();
despird 2002-11-29
  • 打赏
  • 举报
回复
lzd(雨中绝音)真是个好老师,可惜罗嗦点;
byter()的方法即可;
sparrowzhou(狗尾草) 审题错误。
lzd 2002-11-29
  • 打赏
  • 举报
回复
#import "C:\Program Files\Common Files\System\ADO\msado15.dll" \
no_namespace rename("EOF", "EndOfFile")

#include <ole2.h>
#include <stdio.h>
#include<conio.h>

// Function declarations
inline void TESTHR(HRESULT x) {if FAILED(x) _com_issue_error(x);};
void CountX(void);
void PrintProviderError(_ConnectionPtr pConnection);
void PrintComError(_com_error &e);

///////////////////////////////////////////////////////////
// //
// Main Function //
// //
///////////////////////////////////////////////////////////

void main()
{
if(FAILED(::CoInitialize(NULL)))
return;

CountX();

::CoUninitialize();
}

///////////////////////////////////////////////////////////
// //
// CountX Function //
// //
///////////////////////////////////////////////////////////

void CountX()
{
// Define ADO object pointers.
// Initialize pointers on define.
// These are in the ADODB:: namespace
_RecordsetPtr pRstEmployee = NULL;

//Define Other Variables
HRESULT hr = S_OK;
_variant_t Index;
Index.vt = VT_I2;
int j = 0;

_bstr_t strCnn("Provider=SQLOLEDB;Data Source=srv;"
"Initial Catalog=Pubs;User Id=sa;Password=;");

try
{
// Open recordset with data from Employee table.
TESTHR(pRstEmployee.CreateInstance(__uuidof(Recordset)));
pRstEmployee->Open("Employee", strCnn, adOpenForwardOnly,
adLockReadOnly, adCmdTable);

// Print information about Fields collection.
printf("%d Fields in Employee\n", pRstEmployee->Fields->Count);
for (int intLoop = 0;
intLoop <= (pRstEmployee->Fields->Count-1);
intLoop++)
{
Index.iVal = intLoop;
printf(" %s\n",(LPSTR) pRstEmployee->Fields->
GetItem(Index)->Name);
}

// Print information about Properties collection.
printf("\n%d Properties in Employee\n", pRstEmployee->
Properties->Count);
for (intLoop = 0;
intLoop <= (pRstEmployee->Properties->Count - 1);
intLoop++)
{
j++;
Index.iVal = intLoop;
printf(" %s\n" ,(LPSTR)pRstEmployee->Properties->
GetItem(Index)->Name);
if (((j % 23) == 0) || (intLoop == 11))
{
printf("\nPress any key to continue...");
getch();

//Clear the screen for the next display
system("cls");
j = 0;
}
}
// Clean up objects before exit.
pRstEmployee->Close();
}

catch(_com_error &e)
{
// Notify user of any errors that result from
// executing the query.
// Pass a connection pointer accessed from the Recordset.
_variant_t vtConnect = pRstEmployee->GetActiveConnection();

switch(vtConnect.vt)
{
case VT_BSTR:
PrintComError(e);
break;
case VT_DISPATCH:
PrintProviderError(vtConnect);
break;
default:
printf("Errors occured.");
break;
}
}
}

///////////////////////////////////////////////////////////
// //
// PrintProviderError Function //
// //
///////////////////////////////////////////////////////////

void PrintProviderError(_ConnectionPtr pConnection)
{
// Print Provider Errors from Connection object.
// pErr is a record object in the Connection's Error collection.
ErrorPtr pErr = NULL;

if( (pConnection->Errors->Count) > 0)
{
long nCount = pConnection->Errors->Count;

// Collection ranges from 0 to nCount -1.
for(long i = 0; i < nCount; i++)
{
pErr = pConnection->Errors->GetItem(i);
printf("Error number: %x\t%s\n",pErr->Number,
pErr->Description);
}
}
}

///////////////////////////////////////////////////////////
// //
// PrintComError Function //
// //
///////////////////////////////////////////////////////////

void PrintComError(_com_error &e)
{
_bstr_t bstrSource(e.Source());
_bstr_t bstrDescription(e.Description());

// Print Com errors.
printf("Error\n");
printf("\tCode = %08lx\n", e.Error());
printf("\tCode meaning = %s\n", e.ErrorMessage());
printf("\tSource = %s\n", (LPCSTR) bstrSource);
printf("\tDescription = %s\n", (LPCSTR) bstrDescription);
}

byter 2002-11-29
  • 打赏
  • 举报
回复
_RecordsetPtr rs;
。。。
(打开数据库)
。。。
_variant_t va = rs->Fields->Count;
sparrowzhou 2002-11-29
  • 打赏
  • 举报
回复
GetRecordCount()
【源码免费下载链接】:https://renmaiwang.cn/s/2tc6f 《基于SSM框架的外卖跑腿系统:深度解析与学习指南》外卖跑腿系统作为现代生活不可或缺的一部分,其背后的开发技术与实现机制是许多IT从业者关注的重点。本篇文章将围绕"基于SSM框架的外卖跑腿系统源码+数据库+文档"进行深入探讨,帮助开发者了解SSM框架在构建此类系统的应用。SSM框架是由Spring、SpringMVC和Mybatis三大组件组成的Java Web开发框架。Spring作为一个全面的容器,负责管理应用对象的生命周期和依赖关系;SpringMVC则作为前端控制器,处理HTTP请求并调度服务;Mybatis作为持久层框架,提供了灵活的SQL映射,简化了数据库操作。1. **Spring框架**:Spring的核心特性是依赖注入(Dependency Injection, DI),它允许开发者通过配置文件或注解来声明对象之间的依赖关系,降低了代码的耦合度。此外,Spring还提供了事务管理、AOP(面向切面编程)等功能,使得业务逻辑的编写更加简洁。2. **SpringMVC**:作为Spring的一个模块,SpringMVC用于处理Web请求。它采用了模型-视图-控制器(Model-View-Controller, MVC)的设计模式,分离了展示逻辑、业务逻辑和数据访问,使系统结构更加清晰。请求通过DispatcherServlet分发,经过一系列拦截器,最终到达Controller,处理完成后返回ModelAndView对象,再由视图解析器渲染结果。3. **Mybatis**:Mybatis是一个轻量级的ORM(Object-Relational Mapping)框架,它允许开发者直接编写SQL,将结果集映射到Java对象。Mybatis的动态SQL功能使得复杂查询变得简单,
内容概要:本文介绍了基于平方距离迭代重新加权最小二乘法的鲁棒目标定位方法,旨在提高传感器网络存在异常测距误差情况下的定位精度。该方法通过引入平方距离度量与迭代重加【传感器】【鲁棒目标定位】基于平方距离迭代重新加权最小二乘法的鲁棒目标定位(Matlab代码实现)权机制,有效降低粗差对定位结果的影响,提升算法的鲁棒性。文给出了详细的数学模型构建过程、算法实现步骤,并提供了Matlab代码实现,便于读者复现和验证算法性能。同时,文档列举了大量相关科研方向与技术服务内容,涵盖智能优化算法、机器学习、路径规划、通信与信号处理等多个领域,展示了该团队在科研仿真方面的广泛技术支持能力。; 适合人群:具备一定信号处理、优化算法及Matlab编程基础的研究生、科研人员及从事传感器网络、定位技术等相关领域的工程技术人员。; 使用场景及目标:①用于解决无线传感器网络受噪声或异常值干扰的目标定位问题;②提升传统最小二乘定位算法在非视距(NLOS)或复杂环境下的鲁棒性;③为相关科研项目提供可复现的算法原型与代码参考; 阅读建议:建议读者结合Matlab代码逐段理解算法实现流程,重点关注迭代重加权策略的设计逻辑,并可通过仿真不同噪声场景来验证算法有效性,进一步拓展至其他鲁棒估计问题的研究。
【源码免费下载链接】:https://renmaiwang.cn/s/ub2d4 《现代工程图学习题集(第3版)答案》是一个专为学习工程图学的学生和教师准备的重要参考资料。工程图学是工程领域基础且关键的一门学科,它涉及到图形表达、尺寸标注、投影原理等多个方面,对于理解和设计工程项目至关重要。这份答案集详细解答了教材的各类练习题目,帮助学习者检验自己的理解,深化对工程图学概念的掌握。在工程图学的学习过程,了解并熟练应用投影法是基础。主要包括正投影、斜投影、轴测投影等,其正投影是工程图学最基本的表达方式,包括三个主要视图:主视图、俯视图和侧视图,它们分别展示了物体从前、上、侧面看的样子。通过这些视图,可以全面了解物体的形状和尺寸。尺寸标注是工程图学的另一核心内容,正确地标注尺寸能确保工程设计的精确性。这包括定形尺寸、定位尺寸和总体尺寸,以及公差和配合的概念。在《现代工程图学习题集(第3版)答案》,会涵盖如何进行有效的尺寸标注和解读。此外,学习者还会接触到工程图的符号系统,如剖面符号、断裂符号、焊接符号等,这些都是用来更直观地表示物体内部结构或工艺处理的方法。解题集的答案将帮助学生理解并正确使用这些符号。在第三版的学习题集,可能会包含一些新的变化和更新,比如三维建模的引入,CAD(计算机辅助设计)软件的应用,这些都使得工程图学与现代工程技术更加紧密相连。解答集将针对这些现代化的绘图技术和工具提供解决方案。工程图学习题集通常包含各种类型的题目,如绘制视图、识别投影、解释尺寸标注、解决问题等。解答集不仅提供了答案,还可能包含了解题思路和步骤,这对于提高学生的分析和解决问题的能力极其有益。《现代工程图学习题集(第3版)答案》是学习工程图学不可或缺的辅助资料,它能帮助学习者巩固理论知识,提升实践技能,从而更好地应对实际工程的图学问题。通过对压缩包内的文件进行详细研究,

4,017

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧