class ADOConn
{
public:
_ConnectionPtr m_pConnection;
_RecordsetPtr m_pRecordset;
public:
ADOConn();
virtual ~ADOConn();
void OnInitADOConn();
_RecordsetPtr& GetRecordSet(_bstr_t bstrSQL);
BOOL ExecuteSQL(_bstr_t bstrSQL);
void ExitConnect();
};
void ADOConn::OnInitADOConn()
{
::CoInitialize(NULL);
try
{
m_pConnection.CreateInstance("ADODB.Connection");
_bstr_t strConnect= "Provider=SQLOLEDB;Server=MICOSOFT-69363E\SQLEXPRESS;Database=kucun;uid=MICOSOFT-69363E\Adminstrator;pwd=111111";
m_pConnection->Open(strConnect,"","",adModeUnknown);
}
catch(_com_error e)
{
AfxMessageBox(e.Description());
}
}//
_RecordsetPtr& ADOConn::GetRecordSet(_bstr_t bstrSQL)
{
try
{
if(m_pConnection==NULL)
OnInitADOConn();
m_pRecordset.CreateInstance(_uuidof(Recordset));
m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,
adLockOptimistic,adCmdText);
}
catch(_com_error e)
{
AfxMessageBox(e.Description());
}
return m_pRecordset;
}
//
BOOL ADOConn::ExecuteSQL(_bstr_t bstrSQL)
{
try
{
if(m_pConnection==NULL)
OnInitADOConn();
m_pConnection->Execute(bstrSQL,NULL,adCmdText);
return true;
}
catch(_com_error e)
{
AfxMessageBox(e.Description());
return false;
}
}//
void ADOConn::ExitConnect()
{
//
if(m_pRecordset!=NULL)
m_pRecordset->Close();
m_pConnection->Close();
//
::CoUninitialize();
} 这部分编译通过
class CGuset
{
private:
int Uid;
CString Uconame;
CString Things;
CString Store;
int Number;
public:
CStringArray a_Uconame;
CStringArray a_Things;
CStringArray a_Store;
CStringArray a_Number;
CStringArray a_Uid; CGuset();
virtual ~CGuset();
//读取和设置变量
int GetUid();
void SetUid(int iUid);
CString GetUconame();
void SetUconame(CString cUconame);
CString GetThings();
void SetThings(CString cThings);
CString GetStore();
void SetStore(CString cStore);
int GetNumber();
void SetNumber(int iNumber);
//数据库操作
int HaveName(CString cUconame);
int HaveEmp(int iNumber);
void Load_dep();//批量读取
long sql_insert();
void sql_update(CString cUconame);
void sql_update(CString cThings,CString cStore,int iNumber);
void sql_insert(CString cThings,CString cStore,int iNumber);
void GetData(int iUid);
}; CGuset::CGuset() {
Uid=0;
Uconame="";
Things="";
Store="";
Number=0; }
CGuset::~CGuset()
{}
int CGuset:: GetUid()
{
return Uid;
}
void CGuset::SetUid(int iUid)
{
Uid=iUid;
}
CString CGuset::GetUconame()
{
return Uconame;
}
void CGuset::SetUconame(CString cUconame)
{
Uconame=cUconame;
}
CString CGuset::GetThings()
{
return Things;
}
void CGuset::SetThings(CString cThings)
{
Things=cThings;
}
CString CGuset::GetStore()
{
return Store;
}
void CGuset::SetStore(CString cStore)
{
Store=cStore;
}
int CGuset::GetNumber()
{
return Number;
}
void CGuset::SetNumber(int iNumber)
{
Number=iNumber;
}
//数据库具体操作 int CGuset::HaveName(CString cUconame)
{
//连接数据库
ADOConn m_AdoConn;
m_AdoConn.OnInitADOConn();
//设置SELECT语句
_bstr_t vSQL;
vSQL = "SELECT * FROM Guset WHERE Uconame='" + cUconame + "'"; //执行SELECT语句
_RecordsetPtr m_pRecordset;
m_pRecordset=m_AdoConn.GetRecordSet(vSQL);
if(m_pRecordset->EOF)
{return -1;}
else
{return 1;}
//断开与数据库的连接
m_AdoConn.ExitConnect(); }
int CGuset::HaveEmp(int iNumber)
{
//连接数据库
ADOConn m_AdoConn;
m_AdoConn.OnInitADOConn();
//设置SELECT语句
_bstr_t vSQL;
vSQL = "SELECT * FROM Guset WHERE Number=" + iNumber; //执行SELECT语句
_RecordsetPtr m_pRecordset;
m_pRecordset = m_AdoConn.GetRecordSet(vSQL);
if (m_pRecordset->EOF)
return -1;
else
return 1;
//断开与数据库的连接
m_AdoConn.ExitConnect();
}
每当编译这个类的时候,就会出现如下错误
Guset.obj : error LNK2005: "public: void __thiscall ADOConn::OnInitADOConn(void)" (?OnInitADOConn@ADOConn@@QAEXXZ) already defined in ADOConn.obj
Guset.obj : error LNK2005: "public: class _com_ptr_t <class _com_IIID <struct ADOCG::_Recordset,&struct __s_GUID _GUID_00000556_0000_0010_8000_00aa006d2ea4> > & __thiscall ADOConn::GetRecordSet(class _bstr_t)" (?GetRecordSet@ADOConn@@QAEAAV?$_com_ptr_
t@V?$_com_IIID@U_Recordset@ADOCG@@$1?_GUID_00000556_0000_0010_8000_00aa006d2ea4@@3U__s_GUID@@A@@@@V_bstr_t@@@Z) already defined in ADOConn.obj
Guset.obj : error LNK2005: "public: int __thiscall ADOConn::ExecuteSQL(class _bstr_t)" (?ExecuteSQL@ADOConn@@QAEHV_bstr_t@@@Z) already defined in ADOConn.obj
Guset.obj : error LNK2005: "public: void __thiscall ADOConn::ExitConnect(void)" (?ExitConnect@ADOConn@@QAEXXZ) already defined in ADOConn.obj
Debug/物流.exe : fatal error LNK1169: one or more multiply defined symbols found 怎么解决,请问
{
public:
_ConnectionPtr m_pConnection;
_RecordsetPtr m_pRecordset;
public:
ADOConn();
virtual ~ADOConn();
void OnInitADOConn();
_RecordsetPtr& GetRecordSet(_bstr_t bstrSQL);
BOOL ExecuteSQL(_bstr_t bstrSQL);
void ExitConnect();
};
void ADOConn::OnInitADOConn()
{
::CoInitialize(NULL);
try
{
m_pConnection.CreateInstance("ADODB.Connection");
_bstr_t strConnect= "Provider=SQLOLEDB;Server=MICOSOFT-69363E\SQLEXPRESS;Database=kucun;uid=MICOSOFT-69363E\Adminstrator;pwd=111111";
m_pConnection->Open(strConnect,"","",adModeUnknown);
}
catch(_com_error e)
{
AfxMessageBox(e.Description());
}
}//
_RecordsetPtr& ADOConn::GetRecordSet(_bstr_t bstrSQL)
{
try
{
if(m_pConnection==NULL)
OnInitADOConn();
m_pRecordset.CreateInstance(_uuidof(Recordset));
m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,
adLockOptimistic,adCmdText);
}
catch(_com_error e)
{
AfxMessageBox(e.Description());
}
return m_pRecordset;
}
//
BOOL ADOConn::ExecuteSQL(_bstr_t bstrSQL)
{
try
{
if(m_pConnection==NULL)
OnInitADOConn();
m_pConnection->Execute(bstrSQL,NULL,adCmdText);
return true;
}
catch(_com_error e)
{
AfxMessageBox(e.Description());
return false;
}
}//
void ADOConn::ExitConnect()
{
//
if(m_pRecordset!=NULL)
m_pRecordset->Close();
m_pConnection->Close();
//
::CoUninitialize();
} 这部分编译通过
class CGuset
{
private:
int Uid;
CString Uconame;
CString Things;
CString Store;
int Number;
public:
CStringArray a_Uconame;
CStringArray a_Things;
CStringArray a_Store;
CStringArray a_Number;
CStringArray a_Uid; CGuset();
virtual ~CGuset();
//读取和设置变量
int GetUid();
void SetUid(int iUid);
CString GetUconame();
void SetUconame(CString cUconame);
CString GetThings();
void SetThings(CString cThings);
CString GetStore();
void SetStore(CString cStore);
int GetNumber();
void SetNumber(int iNumber);
//数据库操作
int HaveName(CString cUconame);
int HaveEmp(int iNumber);
void Load_dep();//批量读取
long sql_insert();
void sql_update(CString cUconame);
void sql_update(CString cThings,CString cStore,int iNumber);
void sql_insert(CString cThings,CString cStore,int iNumber);
void GetData(int iUid);
}; CGuset::CGuset() {
Uid=0;
Uconame="";
Things="";
Store="";
Number=0; }
CGuset::~CGuset()
{}
int CGuset:: GetUid()
{
return Uid;
}
void CGuset::SetUid(int iUid)
{
Uid=iUid;
}
CString CGuset::GetUconame()
{
return Uconame;
}
void CGuset::SetUconame(CString cUconame)
{
Uconame=cUconame;
}
CString CGuset::GetThings()
{
return Things;
}
void CGuset::SetThings(CString cThings)
{
Things=cThings;
}
CString CGuset::GetStore()
{
return Store;
}
void CGuset::SetStore(CString cStore)
{
Store=cStore;
}
int CGuset::GetNumber()
{
return Number;
}
void CGuset::SetNumber(int iNumber)
{
Number=iNumber;
}
//数据库具体操作 int CGuset::HaveName(CString cUconame)
{
//连接数据库
ADOConn m_AdoConn;
m_AdoConn.OnInitADOConn();
//设置SELECT语句
_bstr_t vSQL;
vSQL = "SELECT * FROM Guset WHERE Uconame='" + cUconame + "'"; //执行SELECT语句
_RecordsetPtr m_pRecordset;
m_pRecordset=m_AdoConn.GetRecordSet(vSQL);
if(m_pRecordset->EOF)
{return -1;}
else
{return 1;}
//断开与数据库的连接
m_AdoConn.ExitConnect(); }
int CGuset::HaveEmp(int iNumber)
{
//连接数据库
ADOConn m_AdoConn;
m_AdoConn.OnInitADOConn();
//设置SELECT语句
_bstr_t vSQL;
vSQL = "SELECT * FROM Guset WHERE Number=" + iNumber; //执行SELECT语句
_RecordsetPtr m_pRecordset;
m_pRecordset = m_AdoConn.GetRecordSet(vSQL);
if (m_pRecordset->EOF)
return -1;
else
return 1;
//断开与数据库的连接
m_AdoConn.ExitConnect();
}
每当编译这个类的时候,就会出现如下错误
Guset.obj : error LNK2005: "public: void __thiscall ADOConn::OnInitADOConn(void)" (?OnInitADOConn@ADOConn@@QAEXXZ) already defined in ADOConn.obj
Guset.obj : error LNK2005: "public: class _com_ptr_t <class _com_IIID <struct ADOCG::_Recordset,&struct __s_GUID _GUID_00000556_0000_0010_8000_00aa006d2ea4> > & __thiscall ADOConn::GetRecordSet(class _bstr_t)" (?GetRecordSet@ADOConn@@QAEAAV?$_com_ptr_
t@V?$_com_IIID@U_Recordset@ADOCG@@$1?_GUID_00000556_0000_0010_8000_00aa006d2ea4@@3U__s_GUID@@A@@@@V_bstr_t@@@Z) already defined in ADOConn.obj
Guset.obj : error LNK2005: "public: int __thiscall ADOConn::ExecuteSQL(class _bstr_t)" (?ExecuteSQL@ADOConn@@QAEHV_bstr_t@@@Z) already defined in ADOConn.obj
Guset.obj : error LNK2005: "public: void __thiscall ADOConn::ExitConnect(void)" (?ExitConnect@ADOConn@@QAEXXZ) already defined in ADOConn.obj
Debug/物流.exe : fatal error LNK1169: one or more multiply defined symbols found 怎么解决,请问
解决方案 »
- 使用CSocket和CWinThread无法解决的ASSERT(pThreadState->m_hSocketWindow != NULL);的两个问题。
- 两个进程通讯的问题。
- 怎样对YUY2格式的图象进行缩放?
- VC中的soap程序运行出错!
- 做一个对话框,上面只有一个按钮。目标:点击它就能播放D:\一剪梅.mp3
- 我的api为什么不能拦截到mfc函数中的api调用
- ESSENTIAL C++练习3.1,执行不正确(附代码)
- 是不是没个函数定义钱都要加上STDMETHODIMP???
- vc DrawText 文字旋转
- 将文本文件读入存在CStringArray中的问题
- Windows的自动触发计时器,必须是和HWND绑定的么?
- CEGUI与OpenGL、MFC结合出现的问题
http://topic.csdn.net/t/20050525/17/4035191.html
是不是头文件重复包含?
用个
#ifndef X
#define Xclass X#endif
试试
#import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename("EOF","adoEOF")
在主函数中加入AfxOleInit();