int CDatabase::InitData() { //::CoInitialize(NULL); //不加上这句话会出错 char m_szConnect[512]; char m_szTmp[1024] = ""; try { 连接XdData,p1003714a008//SQLEXPRESS此处必须是双斜杠,单斜杠是转义字符 //创建Connection对象 HRESULT hr = m_Connection.CreateInstance(__uuidof(Connection)); sprintf(m_szConnect,"Provider=SQLOLEDB.1;Persist Security Info=False;Initial Catalog=login1;Data Source=p1003714a008//SQLEXPRESS"); hr = m_Connection->Open(_bstr_t(m_szConnect),_bstr_t("sa"),_bstr_t("123"),-1); TRACE("数据库连接成功!/n"); //记录调试信息 } catch(_com_error & e) { sprintf(m_szTmp, "数据库打开失败,错误原因:%s/n",LPCTSTR(e.Description())); TRACE(m_szTmp); return 0 ; } return 1 ; } 这样数据库总是连接失败,后来知道ADO是com组件,它必须先进行初始才能够正常