vc ado 连接sql server2005有关问题

vc ado 连接sql server2005问题
#include "stdafx.h"
#include <string>
#include <iostream>
#include <cstdlib>
#include "atlstr.h"

using namespace std;

class fado
{
public:
_ConnectionPtr mcon;
_RecordsetPtr mrst;

public:
fado(){}
virtual ~fado(){}
void oninitadoc();
_RecordsetPtr& getrst(_bstr_t bstrsql);
BOOL exesql(_bstr_t bstrsql);
void exitcon();

};
void fado::oninitadoc()
{
::CoInitialize(NULL);

try
{
mcon.CreateInstance("ADODB.Connection");

_bstr_t strcon="Provider=SQLOLEDB.1;Password=123456;Persist Security Info=True;User ID=Gavin;Initial Catalog=userman;Data Source=GAVIN\\SQLEXPRESS";

mcon->Open(strcon,"","",adModeUnknown);


}
catch(_com_error &e)
{


cout<<e.Description();
//MessageBox(e.Description());
}

}



_RecordsetPtr& fado::getrst(_bstr_t bstrsql)
{
try
{
if(mcon==NULL)
oninitadoc();

mrst.CreateInstance(__uuidof(Recordset));
mrst->Open(bstrsql,mcon.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
}
catch(_com_error e)
{
cout<<e.Description()<<endl;
//AfxMessageBox(e.Description());
}

return mrst;
}

BOOL fado::exesql(_bstr_t bstrsql)
{
_variant_t RecordsAffected;
try
{
if(mcon==NULL)
oninitadoc();
mcon->Execute(bstrsql,NULL,adCmdText);
return true;
}
catch(_com_error e)
{
cout<<e.Description()<<endl;
//AfxMessageBox(e.Description());
return false;
}
}

void fado::exitcon()
{
if(mrst!=NULL)
mrst->Close();
mcon->Close();

::CoUninitialize();
}

class cusers
{
private:
int uid;
CString uname;
CString upwd;
public:
cusers(void);
~cusers(void);
int guid();
void setuid(int vuid);
CString guname();
void setuname(CString vuname);
CString gupwd();
void setupwd(CString vupwd);


void sqlinsert();
void sqlupdate(CString cuid);
void sqldelete(CString cuid);

void getdata(CString cuid);

};

cusers::cusers()
{
uid=0;
uname="";
upwd="";
}

cusers::~cusers(void)
{
}

int cusers::guid()
{
return uid;
}

void cusers::setuid(int vuid)
{
uid=vuid;
}


void cusers::sqlinsert()
{
fado fa;
fa.oninitadoc();

_bstr_t vsql;
vsql="INSERT INTO users (uname,upwd) VALUES (uname,upwd)";
fa.exesql(vsql);
fa.exitcon();


}

void cusers::getdata(CString cuid)
{
fado fa;
fa.oninitadoc();

_bstr_t vsql;
vsql="SELECT * FROM users WHERE uid="+cuid;

_RecordsetPtr mrst;
mrst=fa.getrst(vsql);


//cout<<cuid;
if(mrst->adoEOF==1)
cusers();
else
{
//int uid=atoi(cuid);
uname=(LPCTSTR)(_bstr_t)mrst->GetCollect("uname");
upwd=(LPCTSTR)(_bstr_t)mrst->GetCollect("upwd");
}

fa.exitcon();
}




程序为
int main()
{
try{

cusers cu;
cu.sqlinsert();
//cu.getdata("10");
}
catch (_com_error &e) 


cout<<e.Description()<<endl;

getchar();
return 0;
}

程序中的问题语句是
void cusers::sqlinsert()
{
fado fa;
fa.oninitadoc();

_bstr_t vsql;
vsql="INSERT INTO users (uname,upwd) VALUES (uname,upwd)";