可以,CDatabase是MFC的东西,所以要初始化MFC
解决方案 »
- 64位操作系统对VC编程有影响吗
- <急啊,帮下忙!>mfc怎样实现一个对话框向主对话框发送消息??
- 请wangjia184 进!
- 请教: 如何使用已有驱动的接口?
- 请问如何弹出在资源管理器中的空白区域点右键弹出的菜单?
- 如何使tree的某个叶子或结点DisEnable=================
- cedit的滚动问题&&定时器的问题
- 怎么将 clipboard 中的数据保存出来?? ?? ?? ?? ?? 80分
- 添加class时,怎么找不到CMenu基类?
- 文件操作问题,怎么有0x00呢
- 用VC++做的一个模块怎样在C中用(因为VC中用了类,而C中没类)劳驾了
- 用VC++做MCI编程时的问题……
然后就可以C,C++并行混合编程了
1.建win32 console application程序,选择MFC支持
2.#include <afxdb.h>
int
main (....)
{
CDatabase db;
int i;
i= db.OpenEx(......);
cout《i《endl;
return 0;}可是无法编译,怎么回事?另外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 objectCWinApp 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;
}
//----------------自己加的------------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]呢?
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);//-----------以上代码未经过测试,也未包含错误捕获--------------
//--------------------具体开发时必须要考虑错误捕获------------