可以啊,你把二进制数据放到LONGBLOB字段就不OK?

解决方案 »

  1.   

    怎样将图片存入mysql数据库(最好能用servlet代码写出来),谢谢!!!!!!!!!
      

  2.   

    我都是将图片BASE64编码,存到数据库
    取出时再BASE64解码
      

  3.   

    bool CNewMysql::AddNewImage(Data_Param *p,char *strFileName)
    {
    int nColNum=p->col_names.GetSize()-1;
    if(nColNum<=0)
    {
    AddNewDebugLog("AddNewImage","参数错误","没有要加入的image字段");
    return false;
    }
    int nBufLen=0;
    CString strCurrentFileName;
    for(int i=0;i<nColNum;i++)
    {
    strCurrentFileName.Format("%sF%d.jpg",strFileName,i);
    CFile file;
    if(file.Open(strCurrentFileName.LockBuffer(),CFile::modeReadWrite|CFile::shareDenyNone))
    {
    nBufLen+=file.GetLength();
    file.Close();
    }
    else
    {
    AddNewDebugLog("AddNewImage",strCurrentFileName.LockBuffer(),"打开错误");
    return false;
    }
    }
    nBufLen=(int)(nBufLen*2);
    char *query,*pBuf;
    query=new char[nBufLen];
    DWORD dwFileLen=0;
    sprintf(query,"Insert into %s(",p->tab_name);
    for(i=0;i<nColNum;i++)
    {
    strcat(query,p->col_names.GetAt(i).LockBuffer());
    strcat(query,",");
    }
    strcat(query,p->col_names.GetAt(i).LockBuffer());
    strcat(query,")Values(");
    strcat(query,p->insert_vals.GetAt(0).LockBuffer());
    strcat(query,",'");
    pBuf=query+strlen(query);
    for(i=0;i<nColNum;i++)
    {
    strCurrentFileName.Format("%sF%d.jpg",strFileName,i);
    CFile file;
    if(file.Open(strCurrentFileName,CFile::modeRead|CFile::shareDenyNone))
    {
    DWORD dwBufLen=file.GetLength();
    dwFileLen+=dwBufLen;
    char *buf=new char[dwBufLen];
    file.Read(buf,dwBufLen);
    file.Close();
    pBuf+=mysql_escape_string(pBuf,buf,dwBufLen);
    if(i==(nColNum-1))
    {
    strcat(pBuf,"')");
    pBuf+=sizeof(char)*2;
    }
    else
    {
    strcat(pBuf,"','");
    pBuf+=sizeof(char)*3;
    }
    delete []buf;
    }
    else
    {
    AddNewDebugLog("AddNewImage",strCurrentFileName.LockBuffer(),"打开错误");
    delete []query;
    return false;
    }
    }

    if(mysql_query(&m_MySql,query))
    {
    char* szError=CNewMysql::OutError();
    AddNewDebugLog("CNewMysql","AddNewImage",szError);
    delete []query;
    return false;
    }
    delete []query;
    return true;
    }
      

  4.   

    可以在程序中实现用二进制存取,也可以在数据库中存取图片的url地址