CodeGuru Home VC++ / MFC / C++ .NET / C# Visual Basic VB Forums Developer.com
Results 1 to 2 of 2
  1. #1
    Join Date
    Apr 1999
    Posts
    19

    isapi with SQL server.

    hi!
    Now I use SQL server7 and microsoft IIS to manage
    database at web.
    But when I read data(long length Text(SQL data format) - over about 400 bytes) at web, I meet database error. I use this data with CString at
    isapi DLL that is my project file.

    follow my programming.
    ==================================================
    void CWhiteServer::PutTotal(CHttpServerContext* pCtxt, LPCTSTR id, int nClientTotalNum, int nClientMaxNum)
    {
    CString strFilter, strQuery, strOutput, strError;
    BOOL bDownload;
    CString strConnectString;
    strConnectString.LoadString(IDS_CONNECT);
    CString strWedDate;
    CString strUpdateFormat;
    try
    {
    CDatabase db;
    if (!db.OpenEx(strConnectString,
    CDatabase:penReadOnly | CDatabase::noOdbcDialog))
    {
    strError.LoadString(IDS_ERR_FAILED_ODBC_OPEN);
    *pCtxt << strError;
    }
    else
    {
    CRecordset rsSource(&db);
    strQuery.Format("SELECT COUNT(¹øÈ£), MAX(¹øÈ£) FROM addBook WHERE id = \'%s\'", id);
    if (rsSource.Open(CRecordset::snapshot, strQuery))
    {
    if (rsSource.IsBOF() || rsSource.IsEOF()){
    strError.LoadString(IDS_ERR_TABLE_BOF_EOF);
    *pCtxt << strError;
    return;
    }
    else
    {
    int nServerTotalNum, nServerMaxNum;
    CDBVariant varValue;
    rsSource.GetFieldValue((short)0, varValue );
    nServerTotalNum = varValue.m_lVal;
    rsSource.GetFieldValue((short)1, varValue);
    nServerMaxNum = varValue.m_lVal;

    if(nServerTotalNum == 0) {
    rsSource.Close();
    db.Close();
    *pCtxt << "ServerNothing";
    return;
    }
    if(nClientTotalNum < nServerTotalNum)
    bDownload = TRUE;
    else
    bDownload = FALSE;
    }
    rsSource.Close();
    }
    else{
    strError.LoadString(IDS_ERR_FAILED_RECORD_OPEN);
    *pCtxt << strError;
    return;
    }

    //Check bDownload
    if(bDownload){
    int nTotal;
    CAddBook AddBookQuery(&db);//, bUserList);
    strFilter.Format("¹øÈ£ >= %d AND id='%s'", nClientMaxNum, id);
    AddBookQuery.m_strFilter = strFilter;
    if (AddBookQuery.Open())
    {
    if (AddBookQuery.IsBOF()){
    strError.LoadString(IDS_ERR_TABLE_BOF);
    *pCtxt << strError;
    }
    else
    {
    while (!AddBookQuery.IsEOF())
    {
    nTotal++;
    int bDel = 0, bSecret = 0, bBirthMoon = 0, bSex = 0;
    int bDMHome = 0, bDMOffice = 0;

    if(AddBookQuery.m_bDel) bDel = 1;
    if(AddBookQuery.m_bSecret) bSecret = 1;
    if(AddBookQuery.m_bBirthMoon) bBirthMoon = 1;
    if(AddBookQuery.m_bSex) bSex = 1;
    if(AddBookQuery.m_bDMHome) bDMHome = 1;
    if(AddBookQuery.m_bDMOffice) bDMOffice = 1;

    strWedDate = (LPCTSTR)AddBookQuery.m_weddingDate.Format("%Y/%m/%d/%H/%M/%S");
    if(strWedDate == "1970/01/01/09/00/00")
    strWedDate = "";

    // test ÇÊ¿ä
    if(AddBookQuery.m_nViewNameHow == 32484)
    AddBookQuery.m_nViewNameHow = 0;
    if(AddBookQuery.m_nViewTelCon == 32484)
    AddBookQuery.m_nViewTelCon = 0;
    if(AddBookQuery.m_oNum == 1246576928)
    AddBookQuery.m_oNum = 0;
    if(AddBookQuery.m_kuNum == 1246576928)
    AddBookQuery.m_kuNum = 0;

    // AddBookQuery.m_Memo = AddBookQuery.m_Memo.Left(20);
    //ISAPITRACE1( "¸Þ¸ð %s\n",AddBookQuery.m_Memo);
    //MB_SERVICE_NOTIFICATION
    //AfxMessageBox("test",MB_TOPMOST);
    strUpdateFormat = "INSERT%s`^%s`^%s`^%s`^%s`^%s`^%s`^%s`^%s`^%s`^%s`^%s`^%s`^%s`^";
    strUpdateFormat += "%s`^%d`^%s`^%s`^%s`^%s`^%s`^%s`^%s`^%s`^%s`^%s`^%s`^%s`^%d`^%s`^%s`^%d`^";
    strUpdateFormat += "%s`^%s`^%d`^%s`^%s`^%s`^%s`^%s`^%s`^%s`^%s`^%s`^%s`^%d`^%d`^%d`^%d`^%s`^";
    strUpdateFormat += "%d`^%d`^%d`^";

    strOutput.Format(strUpdateFormat, (LPCTSTR)AddBookQuery.m_Name,//%s`^%s`^
    (LPCTSTR)AddBookQuery.m_Sir,//%s`^%s`^
    (LPCTSTR)AddBookQuery.m_National,//%s`^%s`^
    (LPCTSTR)AddBookQuery.m_Company,//\n%s`^%s`^
    (LPCTSTR)AddBookQuery.m_Depart,//%s`^%s`^
    (LPCTSTR)AddBookQuery.m_oPosition,//%s`^%s`^
    (LPCTSTR)AddBookQuery.m_oTel3,//%s`^%s`^
    (LPCTSTR)AddBookQuery.m_oTel,//%s`^%s`^
    (LPCTSTR)AddBookQuery.m_oTel2,//%s`^%s`^
    (LPCTSTR)AddBookQuery.m_oFax,//%s`^%s`^
    (LPCTSTR)AddBookQuery.m_oHomePage,//%s`^
    (LPCTSTR)AddBookQuery.m_oAdd1,//%s`^%s`^
    (LPCTSTR)AddBookQuery.m_oAdd2,//%s`^%s`^
    (LPCTSTR)AddBookQuery.m_oPostal,//%s`^%s`^

    (LPCTSTR)AddBookQuery.m_oNational,//%s`^%d`^
    bDMOffice, //%d`^%s`^
    (LPCTSTR)AddBookQuery.m_oMap,//%s`^%s`^
    (LPCTSTR)AddBookQuery.m_Pager,//%s`^
    (LPCTSTR)AddBookQuery.m_MobilePhone,//%s`^
    (LPCTSTR)AddBookQuery.m_hTel,//%s`^%s`^
    (LPCTSTR)AddBookQuery.m_hFax,//%s`^%s`^
    (LPCTSTR)AddBookQuery.m_eMail,//%s`^%s`^
    (LPCTSTR)AddBookQuery.m_eMail2,//%s`^%s`^
    (LPCTSTR)AddBookQuery.m_HomePage,//%s`^%s`^
    (LPCTSTR)AddBookQuery.m_hAdd1,//%s`^%s`^
    (LPCTSTR)AddBookQuery.m_hAdd2,//%s`^%s`^
    (LPCTSTR)AddBookQuery.m_hPostal,//%s`^%s`^
    (LPCTSTR)AddBookQuery.m_hNational,//\n%s`^%s`^
    bDMHome,//\n%d`^%s`^
    (LPCTSTR)AddBookQuery.m_hMap,//%s`^%s`^
    (LPCTSTR)AddBookQuery.m_Birth,//%s`^%s`^
    bBirthMoon,//%d`^%d`^
    strWedDate,//%s`^%s`^

    (LPCTSTR)AddBookQuery.m_wedName,//%s`^%s`^
    bSex, //%d`^%d`^
    (LPCTSTR)AddBookQuery.m_Arrange,//%s`^%s`^
    (LPCTSTR)AddBookQuery.m_undefined1,//%s`^%s`^
    (LPCTSTR)AddBookQuery.m_undefined2,//%s`^%d`^
    (LPCTSTR)AddBookQuery.m_undefined3,//%s`^%s`^
    (LPCTSTR)AddBookQuery.m_undefined4, //%s`^%s`^
    (LPCTSTR)AddBookQuery.m_regDate.Format("%Y/%m/%d/%H/%M/%S"),//%s`^%s`^
    (LPCTSTR)AddBookQuery.m_updateDate.Format("%Y/%m/%d/%H/%M/%S"),//%s`^%s`^
    (LPCTSTR)AddBookQuery.m_Memo,//%s`^%s`^
    (LPCTSTR)AddBookQuery.m_ViewName,//%s`^%s`^
    (LPCTSTR)AddBookQuery.m_ViewTel,//\n%s`^%s`^
    AddBookQuery.m_nViewNameHow,//%d`^%s`^
    AddBookQuery.m_nViewTelCon,//%d`^%s`^
    bDel, //%d`^%s`^
    bSecret,//%d`^%d`^
    (LPCTSTR)AddBookQuery.m_telTime.Format("%Y/%m/%d/%H/%M/%S"),//%s`^%d`^

    AddBookQuery.m_oNum,//%d`^%d`^
    AddBookQuery.m_kuNum,//%d`^%d`^
    AddBookQuery.m_Num); //%d`^%s`^

    *pCtxt << strOutput;
    *pCtxt << _T("\r\n");
    AddBookQuery.MoveNext();
    }
    }
    AddBookQuery.Close();
    }
    else{
    strError.LoadString(IDS_ERR_FAILED_RECORD_OPEN);
    *pCtxt << strError;
    }
    }
    else
    *pCtxt << "NoINST";
    db.Close();
    }
    }

    catch(CDBException* pEx)
    {
    //strError.LoadString(IDS_ERR_FAILED_DB_OPEN);
    strError="»óÁ¾ÀÌ °¡ µ¥ÀÌŸ À߷ȵ¥";
    *pCtxt << strError;
    TCHAR szError[1024];
    if(pEx->GetErrorMessage(szError, sizeof(szError)))
    {
    *pCtxt << szError;
    *pCtxt << _T("\r\n");
    return;
    }
    }
    }
    =================================================
    please help me.


  2. #2
    Guest

    Re: isapi with SQL server.

    Hi,

    The MFC put a limit on the string read from database. To correct that, you should have a look in the "DoFieldExchange(CFieldExchange* pFX)" function, than change the RFX_Text functions by adding the maximum size of your string as the last parameter, as following: "RFX_Text(pFX, _T("[FIELD1]"), m_Field1, 400);". The value 400 indicate that the maximum char in the string would be 400.

    Stephane BOUDOU
    [email protected]



Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  





Click Here to Expand Forum to Full Width

Featured