當uuid中包含00時,感覺無法實作操作,不報錯,但無動作。
代碼如下,當uuid中不包含00時,可以正常執行,但包含00時,無例外但實際中沒有洗掉資料,求指點,謝謝了!!!
bool _DB_DeletePatientInfo( CString t_sPatLogicID )
{
//判斷資料庫狀態,如果沒有連接,則連接
if ( !m_bDataBaseConnected )
{
if ( !_DB_GetInTouchDatabase() )
{
return false;
}
}
//如果當前記錄是打開狀態,則先關閉并設為NULL
if ( m_pRecordset->State )
{
m_pRecordset->Close();
}
//查找病人
CString tmp ("select * from Patient where PatLogicID = 0x"); //PatLogicID為uuid
int i;
for ( i = 0; i < 16; ++i )
{
CString t_sAdd;
t_sAdd.Format( "%x", (BYTE)t_sPatLogicID.GetAt(i) );
if ( t_sAdd.GetLength() == 1 )
{
t_sAdd = "0" + t_sAdd;
}
tmp = tmp + t_sAdd;
}
_bstr_t strSQL = tmp;
if ( m_pRecordset->State ) //如果當前記錄是打開狀態,則先關閉并設為NULL
{
m_pRecordset->Close();
}
try
{
m_pRecordset->Open(_bstr_t (strSQL),
_variant_t((IDispatch *)m_pConnection, true),
adOpenStatic,
adLockOptimistic,
adCmdText);
}
catch(_com_error e)
{
AfxMessageBox(_T("SearchSampleInfo: 無法上傳到資料庫"));
m_pConnection->Close();
return false;
}
_variant_t TheValue;
TheValue = m_pRecordset->GetCollect("PatNO");
if ( TheValue.vt != VT_NULL )
{
CString PatNO = TheValue; //這里可以正常讀出病人的身份證號碼,表明 m_pRecordset中可以得到資料
}
//洗掉病人
if( m_pRecordset->adoEOF )
{
AfxMessageBox(_T("當前沒有病人被選中"));
return false;
}
try //這里沒有報錯,都正常執行的,但是實際中資料沒有被洗掉。
{
m_pRecordset->Delete(adAffectCurrent);
m_pRecordset->Update();
}
catch(_com_error e)
{
AfxMessageBox(_T("SearchSampleInfo: 無法上傳到資料庫"));
m_pConnection->Close();
return false;
}
return true;
uj5u.com熱心網友回復:
補充一下,開發環境:vs2008 64位 win7 mysql 64位轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/112431.html
標籤:VB基礎類
上一篇:VB 代碼 請大神 指教
