对,用image类型,同图片操作一样

解决方案 »

  1.   

    to  :bigysw(大花脸)  、superzhou(学海无涯) 
    怎样存到库里面去
      

  2.   

    要看什么开发工具了。Delphi:
    先用一个Table中Query取得表。Edit;
    TBlobField('音乐').LoadFromFile('音乐文件名');
    Post;
      

  3.   

    这是我的一个ISAPI程序保存图片文件的片断
    用户通过IE浏览器向ISAPI 发送数据,ISAPI将图片数据保存到wwwpic.dbo.info_pic如果是C/S程序,更简单,原理是一样的
    希望下面的代码对你有些帮助
    mp3属于二进制文件,应该用img数据类型 //--------------------------------------
    /////////////////////////////////////////////////
    // pb:  point to head+pic memory
    // dwPicLen: the length of pic plus length of html header
    /////////////////////////////////////////////////

    SQLHENV henv = SQL_NULL_HENV;
    SQLHDBC hdbc = SQL_NULL_HDBC;     
    SQLHSTMT hstmt = SQL_NULL_HSTMT;
        RETCODE retcode;
        PTR pParmID; if(SQLAllocHandle (SQL_HANDLE_ENV, NULL, &henv)!=SQL_SUCCESS)
    {
    *pCtxt<<_T(m_strPicHead);
    *pCtxt<<_T("系统错误,数据库环句柄分配失败。");
    *pCtxt<<_T(m_strPicEnd);

    return;
    }
    if(SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(SQLPOINTER) SQL_OV_ODBC3, SQL_IS_INTEGER)!=SQL_SUCCESS)
    {
    *pCtxt<<_T(m_strPicHead);
    *pCtxt<<_T("系统错误,数据库环句柄设定失败。");
    *pCtxt<<_T(m_strPicEnd);
    return;
    }
    if(SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc)!=SQL_SUCCESS)
    {
    *pCtxt<<_T(m_strPicHead);
    *pCtxt<<_T("系统错误,数据库连接句柄分配失败。");
    *pCtxt<<_T(m_strPicEnd);
    return;
    }         char buf[1024];
    char *pc,* pp;
    memset(buf,'\0',1024);
    pc=buf+256;
    pp=buf+512;
    strcpy(buf,g_strDataSource);
    strcpy(pc,g_strSqlAccount);
    strcpy(pp,g_strSqlPassWord);    retcode = SQLConnect(hdbc, (unsigned char *)buf, SQL_NTS,
    (unsigned char *)pc,SQL_NTS, 
    (unsigned char *)pp,SQL_NTS);
    if(retcode==SQL_ERROR)
    {
    *pCtxt<<_T(m_strPicHead);
    *pCtxt<<_T("系统错误,数据库连接失败。");
    *pCtxt<<_T(m_strPicEnd);
    return;
    }
    if(SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt)!=SQL_SUCCESS)
    {
    *pCtxt<<_T(m_strPicHead);
    *pCtxt<<_T("系统错误,数据库语句句柄分配失败。");
    *pCtxt<<_T(m_strPicEnd);
    return;
    }    SDWORD cbImgSize =SQL_LEN_DATA_AT_EXEC(dwPicLen);    retcode = SQLBindParameter(hstmt, // hstmt
                1, // ipar
                SQL_PARAM_INPUT, // fParamType
                SQL_C_BINARY, // fCType
            SQL_LONGVARBINARY, // FSqlType
                dwPicLen, // cbColDef
                0, // ibScale
                (VOID *)1, // rgbValue
                0, // cbValueMax
                &cbImgSize); // pcbValue
      if(retcode!=SQL_SUCCESS)
    {
    *pCtxt<<_T(m_strPicHead);
    *pCtxt<<_T("系统错误,数据库参数绑定失败。");
    *pCtxt<<_T(m_strPicEnd);
    return;
    }
    ///-----------------------------------------------------
    CString strNcid,strDate,str;
    strNcid.Format("T%s%d",pUser->m_strUserName.Left(2),clsRand.GetRand()); str.Format("%d",dwPicLen);
    COleDateTime curTime;
    curTime=COleDateTime::GetCurrentTime();
    strDate=curTime.Format("%Y.%m.%d %H:%M:%S");
    ///////////////////////////////////////////////////////
    memset(buf,'\0',1024);
    strcpy(buf,"INSERT INTO wwwpic.dbo.info_pic(ncid,pddate,pilen,imgpic) VALUES('");
    //strcpy(buf,"wwwpic.dbo.cp_info_pic_add '");
    strcat(buf,strNcid);
    strcat(buf,"','");
    strcat(buf,strDate);
    strcat(buf,"','");
    strcat(buf,str);
    strcat(buf,"',?)");
    if(SQLExecDirect(hstmt,(unsigned char *)buf,SQL_NTS)!=SQL_NEED_DATA)
    {
    *pCtxt<<_T(m_strPicHead);
    *pCtxt<<_T("系统错误,数据库数据交换失败。");
    *pCtxt<<_T(m_strPicEnd);
    return;
    }
        retcode = SQLParamData(hstmt, &pParmID);
        if (retcode == SQL_NEED_DATA)
        {
            SQLPutData(hstmt,pb,dwPicLen); 
        }
        // Make final SQLParamData call.
        while(SQLParamData(hstmt, &pParmID)==SQL_STILL_EXECUTING) Sleep(100);
    if(retcode==SQL_ERROR)
    {
    *pCtxt<<_T(m_strPicHead);
    *pCtxt<<_T("系统错误,向数据库传送数据失败。");
    *pCtxt<<_T(m_strPicEnd);
    return;
    }
      

  4.   

    //  读写 ClongBiny型 图片是这样的,读写mp3没试过
       //读:
       CDatabase db;
    db.Open("ODBC;DSN=dsnMPtest_mp3;UID=sa;PWD=123456",FALSE,FALSE);
        CRS_MPtest rsMPtest(&db);
     
    rsMPtest.Open();
    rsMPtest.MoveFirst();
     
        CFile outFile("OutPut\\Out1.Bmp",CFile::modeCreate|CFile::modeWrite);
                LPSTR buffer = (LPSTR)GlobalLock(rsMPtest.m_postal_code.m_hData);
                outFile.WriteHuge(buffer,rsMPtest.m_postal_code.m_dwDataLength);
                GlobalUnlock(rsMPtest.m_postal_code.m_hData);
                outFile.Close();
       //写:
        CDatabase db;
    db.Open("ODBC;DSN=dsnMPtest_mp3;UID=sa;PWD=123456",FALSE,FALSE);
        CRS_MPtest rsMPtest(&db);
      rsMPtest.Open();
    rsMPtest.AddNew();
        
        CFile fileImage;
            CFileStatus fileStatus;
     
            fileImage.Open("SETUP16.BMP", CFile::modeRead);

    fileImage.GetStatus(fileStatus);
     rsMPtest.m_postal_code.m_dwDataLength = fileStatus.m_size;        HGLOBAL hGlobal = GlobalAlloc(GPTR,fileStatus.m_size);
            rsMPtest.m_postal_code.m_hData = GlobalLock(hGlobal);        fileImage.ReadHuge(rsMPtest.m_postal_code.m_hData,fileStatus.m_size);        rsMPtest.SetFieldDirty(&rsMPtest.m_postal_code);
            rsMPtest.SetFieldNull(&rsMPtest.m_postal_code,FALSE);

    rsMPtest.m_ID="1";
    //rsMPtest.m_postal_code.m_hData;
    rsMPtest.Update();