在vc++中增加记录怎么才能真正添加到数据库里面啊?
1个回答
展开全部
可以用ADO方式连接上数据库,再操作数据库。这是我以前的一个函数,做连接数据库用的,可以参考:BOOL CMyPropertyPage3::GetSqlDBLink(CString strDBName/*=""*/)
{
if (m_pConn->State)
{
m_pConn->Close();
}
// HRESULT hr;
CString strLink;
try
{
m_pConn->ConnectionTimeout=60;///设置超时时间为60秒 ,防止操作系统中装有类似360安全卫士的软件,阻断进程进行放行提示
//以下是连接access2000数据库。。。
//pConn->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=lo.mdb;","","",adModeUnknown);
//连接SQL数据库
strLink = "Provider=SQLOLEDB;Server=";
strLink += m_strIP;
strLink += ";DATABASE=";//master;";
if ("" == strDBName)
strLink += "master";
else
strLink += strDBName;
strLink += ";UID=";
strLink += m_strUserName;
strLink += ";PWD=";
strLink += m_strPassWord;
m_pConn->Open(class _bstr_t(strLink), "", "", adModeUnknown);
}
catch(_com_error e)///捕捉异常
{
CString temp;
temp.Format("连接数据库错误信息:%s",e.ErrorMessage());
return FALSE;
}
return TRUE;
}
操作数据库:
CString sql="INSERT INTO TABLE1 (COL1,COL2) VALUES(1, 2)";
m_pConn->BeginTrans();
for (i=0; i<nCount; i++)
{
try
{
m_pConn->Execute(class _bstr_t(sql), &ra, adCmdText);
}
catch (_com_error e)
{
m_pConn->RollbackTrans();
AfxMessageBox(e.Description());
ASSERT(FALSE);
return FALSE;
}
}
try
{
m_pConn->CommitTrans();
}
catch (_com_error e)
{
ASSERT(FALSE);
return FALSE;
}
{
if (m_pConn->State)
{
m_pConn->Close();
}
// HRESULT hr;
CString strLink;
try
{
m_pConn->ConnectionTimeout=60;///设置超时时间为60秒 ,防止操作系统中装有类似360安全卫士的软件,阻断进程进行放行提示
//以下是连接access2000数据库。。。
//pConn->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=lo.mdb;","","",adModeUnknown);
//连接SQL数据库
strLink = "Provider=SQLOLEDB;Server=";
strLink += m_strIP;
strLink += ";DATABASE=";//master;";
if ("" == strDBName)
strLink += "master";
else
strLink += strDBName;
strLink += ";UID=";
strLink += m_strUserName;
strLink += ";PWD=";
strLink += m_strPassWord;
m_pConn->Open(class _bstr_t(strLink), "", "", adModeUnknown);
}
catch(_com_error e)///捕捉异常
{
CString temp;
temp.Format("连接数据库错误信息:%s",e.ErrorMessage());
return FALSE;
}
return TRUE;
}
操作数据库:
CString sql="INSERT INTO TABLE1 (COL1,COL2) VALUES(1, 2)";
m_pConn->BeginTrans();
for (i=0; i<nCount; i++)
{
try
{
m_pConn->Execute(class _bstr_t(sql), &ra, adCmdText);
}
catch (_com_error e)
{
m_pConn->RollbackTrans();
AfxMessageBox(e.Description());
ASSERT(FALSE);
return FALSE;
}
}
try
{
m_pConn->CommitTrans();
}
catch (_com_error e)
{
ASSERT(FALSE);
return FALSE;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询