如何可以拿到EXECUTESQL执行后返回的数据?

gdcola 2004-01-11 11:51:31
如何可以拿到EXECUTESQL执行后返回的数据?
例如:select *from 数据表
...全文
245 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
hachongzi 2004-01-11
  • 打赏
  • 举报
回复
先在StdAfx.h文件中加入:

include <afxdb.h>

include <odbcinst.h>


你可以参考一下如下代码:
CDatabase database;
CString sDsn;
CString sFile = "Example.xls"; // 将被读取的Excel文件名
CString sDriver = "MICROSOFT EXCEL DRIVER (*.XLS)"; // Excel安装驱动

sDsn.Format("ODBC;DRIVER={%s};DSN='';DBQ=%s", sDriver, sFile);

database.Open(NULL, false, false, sDsn);

CRecordset recset(&database);

sSql = "SELECT 列名1,列名2 FROM Example " ;
recset.Open(CRecordset::forwardOnly, sSql, CRecordset::readOnly);
// 获取查询结果

while (!recset.IsEOF())

{

//读取Excel内部数值

recset.GetFieldValue("列名1 ", sItem1);

recset.GetFieldValue("列名2", sItem2);



// 移到下一行

recset.MoveNext();

}



// 关闭数据库

database.Close();



gdcola 2004-01-11
  • 打赏
  • 举报
回复
但是读出来就有问题拉。
if (db.OpenEx("DRIVER={SQL Server};Server=username;DATABASE=smsdb;UID=username;PWD=password;"))
{
CRecordset m_personset(&db);
str="select sms_to,sms_text from sms_queue WHERE status='on hold'and SMS_Type='OUTGOING'";
db.ExecuteSQL(str);
CSms_Queue_Set m_recordset(&db);
m_recordset.Open(AFX_DB_USE_DEFAULT_TYPE,str);//这句出错。提示数据库不支持动态记录集
..................................
gdcola 2004-01-11
  • 打赏
  • 举报
回复
我是这样写的
if (db.Open( _T( "SMSDB"), FALSE,FALSE, _T( "ODBC;UID=sa;PASSWORD=sa" )))
{
str="insert into SMS_Queue(SMS_Text,SMS_From,SMS_Type,Status,SMS_To) values(" ;
str=str+a;
str=str+ " ',' " ;
str=str+ pMsg->TPA;
str=str+"','INCOMING','ON HOLD','";
str=str+pMsg->TPA;
str=str+"')";
db.ExecuteSQL(str);
MessageBox(NULL,"Access database success"," ",MB_OK);
db.Close();
};
这样没问题。
gdcola 2004-01-11
  • 打赏
  • 举报
回复
但是我是访问SQLSERVER数据库的,是一样的吗?

4,012

社区成员

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

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