利用WIN32写一个简单的图书管理界面,里面的各项用例都需要连接到数据库操作,像登陆界面的用户名密码比对,图书的查找删除等。怎么做到这些呢,求大佬解惑
https://blog.csdn.net/tao911110/article/details/91536654
//连接
bool connect_oracl()
{
HRESULT hrt;
char* m_sUid = DB_USERNAME;
char* m_sPwd = DB_PASSWORD;
//char* m_sHost = "10.200.24.44";
char* m_sHost =DB_IP
char* m_sPort = DB_PORT
char* m_sSid = DB_SID
AfxMessageBox(m_sHost);
CString strConnect;
//x64
//strConnect.Format("Provider=OraOLEDB.Oracle.1;Password=%s;PersistSecurity Info=True;User ID=%s;DataSource=\"(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = %s)(PORT = %s)) )(CONNECT_DATA = (SID = %s)))\"", m_sPwd, m_sUid, m_sHost, m_sPort, m_sSid);
strConnect.Format("Provider=OraOLEDB.Oracle.1;Data Source=(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = %s)(PORT = %s))(CONNECT_DATA = (SERVER = DEDICATED)(SERVICE_NAME = %s)));User Id=%s;Password=%s;", m_sHost, m_sPort, m_sSid, m_sUid, m_sPwd);
CString connectionString;
connectionString.Format("Provider=MSDAORA.1;Data Source=(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = %s)(PORT = %s))(CONNECT_DATA = (SERVER = DEDICATED)(SERVICE_NAME = %s)));User Id=%s;Password=%s;", m_sHost, m_sPort, m_sSid, m_sUid, m_sPwd);
try
{
::CoInitialize(NULL); //初始化com环境(必须,否则提示异常)
//创建Connection对象的一个实例
hrt = m_pConnection.CreateInstance(__uuidof(Connection)); //创建Connection对象
m_pConnection->Mode = adModeUnknown;
m_pConnection->ConnectionTimeout = 10; // 设置连接超时10秒
m_pConnection->CommandTimeout = 5;
m_pConnection->Open(_bstr_t(LPCTSTR(connectionString)), "", "", adModeUnknown); //通过用户名、密码以及连接字符串连接数据库
//Sleep(500);
//m_pConnection->CursorLocation = adUseClient; //设置使用客户端连接
}
catch (_com_error e)
{
CString strMsg;
strMsg.Format(_T("错误描述:%s\n错误消息: %s"),
(LPCTSTR)e.Description(),
(LPCTSTR)e.ErrorMessage());
AfxMessageBox(strMsg);
return FALSE;
}
catch (...)
{
T_SaveLog_KF("数据库连接失败!");
AfxMessageBox("数据库连接失败!");
return FALSE;
}
AfxMessageBox("open Oracle ok!");
//查询数据库
m_pRecordset.CreateInstance(_uuidof(Recordset));
//_ConnectionPtr pConnection = NULL;
try
{
//执行命令
hrt = m_pRecordset->Open(_T("select * from tab"), m_pConnection.GetInterfacePtr(), adOpenDynamic, adLockOptimistic, adCmdText);
//AfxMessageBox(hrt);
}
catch (_com_error e)
{
CString strMsg;
strMsg.Format(_T("错误描述:%s\n错误消息: %s"),
(LPCTSTR)e.Description(),
(LPCTSTR)e.ErrorMessage());
AfxMessageBox(strMsg);
return FALSE;
}
if (SUCCEEDED(hrt))
{
//AfxMessageBox("测试查询成功");
T_SaveLog_KF("测试查询成功");
}
else if (FAILED(hrt))
{
AfxMessageBox("测试查询失败,但连接成功");
T_SaveLog_KF("测试查询失败,但连接成功");
}
return TRUE;
}
/**
关闭连接
**/
bool adoclose()
{
try {
if (m_pConnection != NULL)
{
if (m_pRecordset != NULL)
m_pRecordset->Close();//关闭结果集
m_pRecordset = NULL;
m_pConnection->Close();//关闭连接
m_pConnection = NULL;
//::CoUninitialize();//卸载COM环境
}
if (m_pConnection == NULL)
return TRUE;
else
return FALSE;
}
catch (_com_error e)
{
CString strMsg;
strMsg.Format(_T("错误描述:%s\n错误消息: %s"),
(LPCTSTR)e.Description(),
(LPCTSTR)e.ErrorMessage());
AfxMessageBox(strMsg);
return FALSE;
}
}