|
AppBuilder中进行直接ODBC API数据库调用访问的基本方法!(9) pHostData[Count].m_dLeaveWorkDate.second); if (pHostData[Count].m_aEnageTypeInd == SQL_NULL_DATA) pData->m_aEnageType = ""; else pData->m_aEnageType = pHostData[Count].m_aEnageType; pData->m_dCreateDocDate.SetDateTime(pHostData[Count].m_dCreateDocDate.year, pHostData[Count].m_dCreateDocDate.month, pHostData[Count].m_dCreateDocDate.day, pHostData[Count].m_dCreateDocDate.hour, pHostData[Count].m_dCreateDocDate.minute, pHostData[Count].m_dCreateDocDate.second);
m_aData.Add(pData); } } if (RowsFetched < (UINT)m_nRowSetSize) break; } } delete [] pRowStatus; delete [] pHostData; return m_aData.GetSize(); }
八、写数据库 1、普通方法: CString strSQL="INSERT INTO TABLE (FILE1,FILE2,FILE3) VALUES (value1,value2,value3)"
long ExecuteSQL(SQLHDBC hdbc,CString strSQL) { SQLRETURN ReturnCode; SQLHSTMT m_hstmt; BOOL bReturn = FALSE; long nRowCount = 0; if (SQL_SUCCESS == (ReturnCode = ::SQLAllocHandle(SQL_HANDLE_STMT,hdbc,&m_hstmt))) { if (SQL_SUCCESS == (ReturnCode = ::SQLExecDirect(m_hstmt, (UCHAR*)((LPCTSTR)strSQL),SQL_NTS))) { bReturn = TRUE; ::SQLRowCount(m_hstmt,&nRowCount); } } ReturnCode = ::SQLFreeHandle(SQL_HANDLE_STMT,m_hstmt);
// if (!bReturn) nRowCount = 0; return nRowCount; } 注意,要把字段赋为空,字符串、日期应是NULL,可以用下面的函数修改: CString VerifySQLStr(CString strSQL) { int nLength = strSQL.GetLength(); int n1 = 0;//check ''; int n2 = 0; int m1 = 0;//check ##; int m2 = 0; for (int i = 0; i< nLength;i++) { if (strSQL[i] == 39) { n2 = i; if (n2-n1 == 1) { strSQL.Delete(n1,2); strSQL.Insert(n1,"NULL"); nLength +=2; n1 = n2; } else { n1 = n2; } } if (strSQL[i] == '#') { m2 = i; if (m2-m1 == 1) { strSQL.Delete(m1,2); strSQL.Insert(m1,"NULL"); nLength +=2; m1 = m2; } else { m1 = m2; } } }
|