一
数据库操作
m_pConn->Execute((_bstr_t)strSQL , &index , 1);
第二个参数的值是影响的行数
有了这个 就可以在Update数据库的记录的时候不用先Select查看是否存在数据而执行两条SQL语句影响服务器的效率了
二
捕获ADO的数据库操作的异常
catch(_com_error e)
{
::AfxMessageBox(e.Description() , MB_OK);
return FALSE;
}
三
将double类型的时间转换成时间字符串
CString strGPSTime;
COleDateTime GPStime(GPSDate.gpsTime);
strGPSTime = GPStime.Format("%Y-%m-%d %H:%M:%S"); //GPS时间
四
小技巧 在MFC的编辑框显示信息的时候 我以前一般都是 直接
m_strMsg += "提示信息:";
这样会出现往下拖 很烦人
今天刚想到一个小技巧
在插入信息的时候 我们可以插入到头部去 这样就不会滚动 我们看到的就是最新的信息了
m_strMsg.Insert(0 , "信息提示:");
//10.22 新增
对话框的巧妙隐藏 不闪屏!
隐藏窗口
void CFlashThiefDlg::OnWindowPosChanging(WINDOWPOS* lpwndpos)
{
lpwndpos->flags &= ~SWP_SHOWWINDOW;
CDialog::OnWindowPosChanging(lpwndpos);
}
五
判断数据库中的一张表是否存在的函数
//判断一张表是否存在
BOOL IsTableExsist(CString strTableName)
{
try
{
CStringArray arrTableNames;
_RecordsetPtr Recordset = m_pConn->OpenSchema(adSchemaTables);
_variant_t l_vDBTableName;
_bstr_t bstrTableType;
while(!Recordset->adoEOF)
{
l_vDBTableName = Recordset->GetCollect("TABLE_NAME");
bstrTableType = Recordset->GetCollect("TABLE_TYPE");
if ((bstrTableType == (_bstr_t)"TABLE")||(bstrTableType == (_bstr_t)"VIEWS"))
{
arrTableNames.Add((char *)_bstr_t(l_vDBTableName));
}
Recordset->MoveNext();
}
int iCount = arrTableNames.GetSize();
for (int i = 0 ; i < iCount ; i++)
{
CString& strName = arrTableNames[i];
if (strName == strTableName)
return TRUE;
}
}
catch(_com_error& e)
{
ASSERT(FALSE);
CString str;
str.Format("文件名称: %s \n 所在代码行 : %d 执行SQL语句失败 错误原因 %s" , __FILE__ , __LINE__ , (LPCSTR)e.Description());
TRACE(str);
AfxMessageBox(str);
return FALSE;
}
return FALSE;
}
以后再继续
posted on 2009-09-11 16:06
李佳 阅读(701)
评论(0) 编辑 收藏 引用 所属分类:
奇技淫巧