win32程序中可否调用数据库?

zhaoxyu 2002-04-25 09:52:37
请问用appwizard创建win32 console application程序可以使用CDatabase与CRecordset吗?怎么使用?

各位大哥大姐来看看!
...全文
94 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
jyu1221 2002-04-26
  • 打赏
  • 举报
回复
CDatabase m_db;
m_db.OpenEx("你的连接字符串",CDatabase::noOdbcDialog);
CRecordset myrs(&m_db);
if(!myrs.Open(strSQL))
{
return -1;
}
long i=0;
while(!myrs.IsEOF())
{
if(i>=10) break;
myrs.GetFieldValue("id",strID);
myrs.GetFieldValue("name",strName);
mydb1[i].id = strID;
mydb1[i].name = strName;
myrs.MoveNext();
i++;
}
myrs.Close();
m_db.Close();




//--------------需要插入到数据库,可以使用ExecuteSQL函数---------
lpszSQL LIKE "INSERT INTO MYTABLENAME(ID,NAME) VALUES(12,'TESTNAME')"
m_db.ExecuteSQL(lpszSQL);

//-----------以上代码未经过测试,也未包含错误捕获--------------
//--------------------具体开发时必须要考虑错误捕获------------
jyu1221 2002-04-25
  • 打赏
  • 举报
回复
生成win32 console application时,选择支持MFC
然后对照以下代码:
// test.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "test.h"

//----------------自己加的-----------start--------------
#include <Afxdb.h>
//----------------自己加的-----------end--------------

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// The one and only application object

CWinApp theApp;

using namespace std;

int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
int nRetCode = 0;

// initialize MFC and print and error on failure
if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
{
// TODO: change error code to suit your needs
cerr << _T("Fatal Error: MFC initialization failed") << endl;
nRetCode = 1;
}
else
{
// TODO: code your application's behavior here.
CString strHello;
strHello.LoadString(IDS_HELLO);
cout << (LPCTSTR)strHello << endl;
}


//----------------自己加的------------start-------------
CDatabase m_db;
//m_db.OpenEx("你的连接字符串",CDatabase::noOdbcDialog);
//这里可以放入任何MFC中的东西。
//----------------自己加的-----------------end--------

return nRetCode;
}


zhaoxyu 2002-04-25
  • 打赏
  • 举报
回复
问题很菜,大家帮帮忙解决一下,发个实例,高分送上!
zhaoxyu 2002-04-25
  • 打赏
  • 举报
回复
关注一下!!!
zhaoxyu 2002-04-25
  • 打赏
  • 举报
回复
还是不行,能举个例子吗?万分感谢!
caihuadao 2002-04-25
  • 打赏
  • 举报
回复
这样吧,再加入这个头文件#include <afxwin.h>看看
zhaoxyu 2002-04-25
  • 打赏
  • 举报
回复
我这样作的:
1.建win32 console application程序,选择MFC支持
2.#include <afxdb.h>

int
main (....)

CDatabase db;
int i;
i= db.OpenEx(......);
cout《i《endl;
return 0;



可是无法编译,怎么回事?另外MFC库怎么初始化?
caihuadao 2002-04-25
  • 打赏
  • 举报
回复
忘了告诉你,数据库头文件也要加入(#include <afxdb.h> )
caihuadao 2002-04-25
  • 打赏
  • 举报
回复
可以,在工程中把MFC倒入就可以了?
然后就可以C,C++并行混合编程了
zhaoxyu 2002-04-25
  • 打赏
  • 举报
回复
还是不懂,能来个例子吗?各个步骤?
那有这方面的介绍?
freelybird 2002-04-25
  • 打赏
  • 举报
回复
可以,你只需把MFC的库初始化后,并把CDatabase的头文件包进来即可,当然,你也需ODBC的支持
zhaoxyu 2002-04-25
  • 打赏
  • 举报
回复
项目很急,各位大哥大姐帮帮忙!
康斯坦汀 2002-04-25
  • 打赏
  • 举报
回复
加入MFC。肯定行。
zhaoxyu 2002-04-25
  • 打赏
  • 举报
回复
能 举个例子吗?
zxs218 2002-04-25
  • 打赏
  • 举报
回复
好像不那么简单,当然也可以。
javanew 2002-04-25
  • 打赏
  • 举报
回复
不行,你要用odbc api
zero1977 2002-04-25
  • 打赏
  • 举报
回复
可以,CDatabase是MFC的东西,所以要初始化MFC
zhaoxyu 2002-04-25
  • 打赏
  • 举报
回复



//----------------自己加的------------start-------------
CDatabase m_db;
//m_db.OpenEx("你的连接字符串",CDatabase::noOdbcDialog);
//这里可以放入任何MFC中的东西。
//----------------自己加的-----------------end--------
CRecordset rs;
rs.Open(rs.Open( CRecordset::dynaset,
_T("SELECT * FROM mytablename") );

CDBVariant varValue;

short nFields = rs.GetODBCFieldCount( );
while( !rs.IsEOF( ) )
{
for( short index = 0; index < nFields; index++ )
{
rs.GetFieldValue( index, varValue );
// do something with varValue
cout << varValue.m_pstring <<endl;
//??????????????
如何将值取出?
//???????????????

}
rs.MoveNext( );
}

rs.Close( );
m_db.Close( );

如何取出数据表中的值,如何将值存入数据表?
我的表是仅有两个字段id,name
我建了个结构:struct mydb{
int id;
string name;

mydb mydb1[10];

怎样将库中的前十个记录存入mydb1[10]呢?






4,011

社区成员

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

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