void CMapWnd::OnSavetosql()
{
// TODO: Add your command handler code here
m_AdoConn.OnInitADOConn();
CString sql;
sql.Format("delete from Lib");
m_AdoConn.ExecuteSQL((_bstr_t)sql);
for(int i=0;i<20;i++)
for(int j=0;j<20;j++)
{
if(m_edit.m_cMap[i][j]!=0)
{
sql.Format("insert into Lib(row,col,thing)values(%d,%d,%d)",i,j,m_edit.m_cMap[i][j]);
m_AdoConn.ExecuteSQL((_bstr_t)sql);
}
}
m_AdoConn.ExitConn();
}void CMapWnd::OnRead()
{
// TODO: Add your command handler code here
m_AdoConn.OnInitADOConn();
CString sql;
sql.Format("select * from Lib");
m_pRs=m_AdoConn.GetRecordSet((_bstr_t)sql);
int i,j,thing;
while(m_pRs->adoEOF)
{
i=atoi((char*)(_bstr_t)m_pRs->GetCollect("cow"));
j=atoi((char*)(_bstr_t)m_pRs->GetCollect("col"));
thing=atoi((char*)(_bstr_t)m_pRs->GetCollect("thing"));
m_edit.m_cMap[i][j]=thing;
m_pRs->MoveNext();
}
m_AdoConn.ExitConn();
Invalidate(TRUE);
}
m_pRs里始终为空。但是第一个函数已经写入了数据了。用企业管理器查也可以查到。
{
// TODO: Add your command handler code here
m_AdoConn.OnInitADOConn();
CString sql;
sql.Format("delete from Lib");
m_AdoConn.ExecuteSQL((_bstr_t)sql);
for(int i=0;i<20;i++)
for(int j=0;j<20;j++)
{
if(m_edit.m_cMap[i][j]!=0)
{
sql.Format("insert into Lib(row,col,thing)values(%d,%d,%d)",i,j,m_edit.m_cMap[i][j]);
m_AdoConn.ExecuteSQL((_bstr_t)sql);
}
}
m_AdoConn.ExitConn();
}void CMapWnd::OnRead()
{
// TODO: Add your command handler code here
m_AdoConn.OnInitADOConn();
CString sql;
sql.Format("select * from Lib");
m_pRs=m_AdoConn.GetRecordSet((_bstr_t)sql);
int i,j,thing;
while(m_pRs->adoEOF)
{
i=atoi((char*)(_bstr_t)m_pRs->GetCollect("cow"));
j=atoi((char*)(_bstr_t)m_pRs->GetCollect("col"));
thing=atoi((char*)(_bstr_t)m_pRs->GetCollect("thing"));
m_edit.m_cMap[i][j]=thing;
m_pRs->MoveNext();
}
m_AdoConn.ExitConn();
Invalidate(TRUE);
}
m_pRs里始终为空。但是第一个函数已经写入了数据了。用企业管理器查也可以查到。
{
try
{
::CoInitialize(NULL); //初始化OLE/COM库环境
m_pCon.CreateInstance("ADODB.Connection");
m_pCon->ConnectionTimeout=3;//连接尝试时间
//连接SQL Server数据库
m_pCon->Open("Provider=SQLOLEDB;Server=127.0.0.1;Database=mota;UID=sa;PWD=123;", "", "",adModeUnknown);
}
catch(_com_error e)//捕捉异常
{
AfxMessageBox(e.Description());
}
}void ADOConn::ExitConn()//断开连接
{
if(m_pRs!=NULL)
m_pRs->Close();
m_pCon->Close();
}_RecordsetPtr& ADOConn::GetRecordSet(_bstr_t bstrSQL)//执行SQL查询语句
{
try
{
if(m_pCon==NULL)
OnInitADOConn();
m_pRs.CreateInstance("ADODB.Recordset");//创建记录集
m_pRs->Open(bstrSQL,m_pCon.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
}
catch(_com_error e)//捕捉异常
{
AfxMessageBox(e.Description());
}
return m_pRs;//返回结果集
}BOOL ADOConn::ExecuteSQL(_bstr_t bstrSQL)//执行SQL操作语句
{
try
{
if(m_pCon==NULL)
OnInitADOConn();//连接数据库
m_pCon->Execute(bstrSQL,NULL,adCmdText);//执行SQL
return true;
}
catch(_com_error e)//捕捉异常
{
AfxMessageBox(e.Description());
return false;
}
}
你这个程序在不停的连接数据库,这样设计不好,最好是一个程序中只保存一个Connection,而且是只在程序初始化时仅仅连接一次数据库即可。
{
// TODO: Add your command handler code here
m_AdoConn.OnInitADOConn();
CString sql;
sql.Format("select * from Lib");
m_pRs=m_AdoConn.GetRecordSet((_bstr_t)sql);//打开记录集(_ConnectionPtr m_pConnection)
m_pRs->Open(sql,m_pConnection.GetInterfacePtr(),adOpenDynamic,
adLockOptimistic,adCmdText);
int i,j,thing;
while(m_pRs->adoEOF)
{
i=atoi((char*)(_bstr_t)m_pRs->GetCollect("cow"));
j=atoi((char*)(_bstr_t)m_pRs->GetCollect("col"));
thing=atoi((char*)(_bstr_t)m_pRs->GetCollect("thing"));
m_edit.m_cMap[i][j]=thing;
m_pRs->MoveNext();
}
m_AdoConn.ExitConn();
Invalidate(TRUE);
}