//#include //#include //#include "ado.h" #include "ado.h" #include #include #include #include #include #include #include #include #include #include using namespace std; int bmain() { ado ado0; bool log = ado0.open("infodba", "infodba", "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=infodba;Initial Catalog=TC12;Data Source=DHRC"); if (log == false) { cout << "登录成功" << endl; char *sql = "select * from FTHZHJBM WHERE PREFIX='FCC20209ww9'"; //ado0.execute(sql); } else { cout << "登录失败" << endl; } ado0.close(); return 0; } bool ado::open(char* UserName, char* Pwd, const char* CnnStr) { try { ::CoInitialize(NULL); //初始化COM环境 m_pConnection.CreateInstance(__uuidof(Connection)); //创建连接对象 m_pConnection->Open(CnnStr, UserName, Pwd, adModeUnknown); } catch (_com_error e) { return true; } return false; } bool ado::open(char* username, char* password, char* dbname, char* ip) { try { ::CoInitialize(NULL); //初始化COM环境 m_pConnection.CreateInstance(__uuidof(Connection)); //创建连接对象 char connStr[200] = ""; sprintf_s(connStr, "Provider=SQLOLEDB;Data Source=%s;Initial Catalog=%s;", ip, dbname); cout << connStr << endl; hr = m_pConnection->Open(connStr, username, password, -1); if (hr != S_OK) return true; } catch (_com_error e) { cout << e.Description() << endl; return true; } return false; } bool ado::execute(char *sqlStr) { cout << "完成执行" << endl; try { m_pRecordSet = m_pConnection->Execute(sqlStr, NULL, 1); cout << "插入成功" << endl; //m_pRecordSet->Close(); /*if(m_pConnection->State){ m_pConnection->Close(); }*/ } catch (_com_error e) { printf(e.Description()); return -1; } return false; } // 有输入参数的查询 int ado::ado_QuerySQL(char *SQL, int inputValueCount, char ** inputValue) { Fields * fields = NULL; long ColCount = 0; long RowCount = 0; int outputValueCount = 0; m_pRecordSet.CreateInstance(__uuidof(Recordset)); m_pRecordSet->Open(SQL, m_pConnection.GetInterfacePtr(), adOpenStatic, adLockOptimistic, adCmdText); hr = m_pRecordSet->get_Fields(&fields); //得到记录集的字段集和 if (SUCCEEDED(hr)) { RowCount = m_pRecordSet->GetRecordCount(); ColCount = m_pRecordSet->Fields->Count; outputValueCount = (int)RowCount; } if (outputValueCount <= 0) { return 0; } else { return 1; } } // 无输入参数的查询 int ado::ado_QuerySQLNoInputParam(char *SQL) { return ado_QuerySQL(SQL, 0, NULL); } bool ado::executeInsert(char* selectSql, char * insertSql,int result) { bool resultSql = false; try { // m_pRecordSet = m_pConnection->Execute(selectSql, NULL, 1); //_variant_t vPrefix, vFlow; if (result==0) { cout << "执行插入" << endl; try { cout << insertSql << endl; m_pRecordSet = m_pConnection->Execute(insertSql, NULL, 1); cout << "插入成功" << endl; resultSql = true; } catch (_com_error e) { printf("error%s\n", e.Description()); resultSql = false; } } m_pRecordSet->Close(); /*if(m_pConnection->State){ m_pConnection->Close(); }*/ return resultSql; } catch (_com_error) { //printf("error%s\n", e.Description() ); return false; } return resultSql; } bool ado::execute2(char* selectSql,char * updatesql,int result) { bool resultSql = false; try { //m_pRecordSet = m_pConnection->Execute(selectSql, NULL, 1); _variant_t vPrefix, vFlow; // int result = ado_QuerySQLNoInputParam(selectSql); //if (!m_pRecordSet->adoEOF) { if (result == 1) { cout << "执行更新" << endl; try { cout << updatesql << endl; m_pRecordSet = m_pConnection->Execute(updatesql, NULL, 1); cout << "更新成功" << endl; resultSql = true; } catch (_com_error e) { printf("error%s\n", e.Description()); resultSql = false; } } m_pRecordSet->Close(); /*if(m_pConnection->State){ m_pConnection->Close(); }*/ } catch (_com_error) { //printf("error%s\n", e.Description() ); return false; } return resultSql; } bool ado::close() { try { m_pConnection->Close(); CoUninitialize(); cout << "退出登录" << endl; } catch (_com_error) { return true; } return false; }