//程序按照ADO连接SQL标准编写,引用,声明无错.
class ConnDB
{
public:
_bstr_t connectionStringSQL;//定义数据库连接
_ConnectionPtr pConnectionSQL;
_variant_t RecordsAffected;
void ConnMod2();
};void ConnDB::ConnMod2()
{
//连接数据库代码
}//在OnInitDialog() 中执行下面2行代码,也无错.
ConnDB newClass;
newClass.ConnMod2();//但是,如果再执行此行代码,则出错.
newClass.pConnectionSQL->Execute("SELECT uid FROM usertab",&RecordsAffected,adCmdText);//错误
"abnormal program termination"请问,这是怎么回事?
如果把代码都放在OnInitDialog()里边写,则无错误.这是为什么?
请指教
class ConnDB
{
public:
_bstr_t connectionStringSQL;//定义数据库连接
_ConnectionPtr pConnectionSQL;
_variant_t RecordsAffected;
void ConnMod2();
};void ConnDB::ConnMod2()
{
//连接数据库代码
}//在OnInitDialog() 中执行下面2行代码,也无错.
ConnDB newClass;
newClass.ConnMod2();//但是,如果再执行此行代码,则出错.
newClass.pConnectionSQL->Execute("SELECT uid FROM usertab",&RecordsAffected,adCmdText);//错误
"abnormal program termination"请问,这是怎么回事?
如果把代码都放在OnInitDialog()里边写,则无错误.这是为什么?
请指教
解决方案 »
- 超稳定高效的 iocp完成端口封装?
- Static控件变色的问题
- 汉字字库的问题 解决即送100分
- 送分100:键盘消息问题
- 刚进来 从新开始 散掉所有的分
- API的EDIT控件更新问题?
- 这样写是不是错了???
- vc++6.0在win2003下的编译问题
- ADO连接ORACLE,一会端口被占用,一会解析失败。这是要闹哪样!!!
- 各位大侠,赶快救命,我是一个新手,制作一个VC DLL文件时,包括了 <nb30.h>,出现 error LNK2001: unresolved external symbol _Netbios@4
- 请问下现在汉化的比较好的MSDN是哪个版本的?
- vc中调用excel,得到所有sheet页的名字(使用odbc或其他都可以)
/********************连接数据库************************/
HRESULT hr;
_ConnectionPtr pConnectionSQL("ADODB.Connection");
try
{
_bstr_t connectionStringSQL("Driver={SQL Server}; Server=192.168.1.10; Uid=client; Pwd=client; Database=gdzz");
pConnectionSQL->ConnectionTimeout=3; //设置超时时间为3秒
hr=pConnectionSQL->Open(connectionStringSQL,"","",NULL);
}
catch(_com_error e)///捕捉异常
{
CString errmsg;
errmsg.Format("连接数据库失败!\r\n错误信息:%s",e.ErrorMessage());
AfxMessageBox(errmsg);///显示错误信息 }
这个是ConnMod2里边的代码,debug没错.
ConnDB newClass;
newClass.ConnMod2();//但是,如果再执行此行代码,则出错.
newClass.pConnectionSQL->Execute("SELECT uid FROM usertab",&RecordsAffected,adCmdText);
如果把代码都放在OnInitDialog()里边写,则无错误.这是为什么?
你的newClass对象是在OnInitDialog定义的??
不是类的成员变量??
/********************连接数据库************************/
HRESULT hr;
_ConnectionPtr pConnectionSQL("ADODB.Connection");
try
{
_bstr_t connectionStringSQL("Driver={SQL Server}; Server=192.168.1.10; Uid=client; Pwd=client; Database=gdzz");
pConnectionSQL->ConnectionTimeout=3; //设置超时时间为3秒
hr=pConnectionSQL->Open(connectionStringSQL,"","",NULL);
}
catch(_com_error e)///捕捉异常
{
CString errmsg;
errmsg.Format("连接数据库失败!\r\n错误信息:%s",e.ErrorMessage());
AfxMessageBox(errmsg);///显示错误信息 }
pConnectionSQL->Execute("SELECT uid FROM usertab",&RecordsAffected,adCmdText);就不会出错??噢,还有,最好把
AfxOleInit();放到app的初试化里面
郁闷~~`我也不知道该怎样了.
handsomerun(毛毛),你能做个测试么?做一个同样的程序,封到类里边看看你那便有错么?顺便再问2个问题.
程序里边没有提示了,就是".","::","->"的时候给的属性或者方法提示.不知道怎样重新让他自动提示.-----------------
_variant_t uname;
CString charname;
charname=uname.bstrVal;
m_nUuid.AddString(charname);
另外程序将从数据库得到的结果转换成CString,本来想转换成char *,不知道怎样转,就转换成CString了.但是在combo box得到的数据后边有几个空格.如果想去掉,应该怎样去掉?
BOOL CAdoAccessApp::InitInstance()
{
…………
AfxOleInit();
…………
}class ConnDB 中class ConnDB
{
public:
void ConnMod2();
ConnDB();
virtual ~ConnDB(); _ConnectionPtr pConnectionSQL;};void ConnDB::ConnMod2()
{
pConnectionSQL.CreateInstance(_uuidof(Connection));
pConnectionSQL->Open("Provider=Microsoft.Jet.OLEDB.4.0; \
Data Source=My.mdb","","",adModeUnknown);}dlg中BOOL CAdoAccessDlg::OnInitDialog()
{
……
m_pRecordset.CreateInstance(_uuidof(Recordset)); ConnDB newClass;
newClass.ConnMod2(); _variant_t RecordsAffected;
m_pRecordset = newClass.pConnectionSQL ->Execute (_bstr_t("SELECT * FROM MyTable") , &RecordsAffected , adCmdUnknown);
……
}