能够存入, 读取出来保存到本地能打开? 那位大侠做过? 用c++实现、

解决方案 »

  1.   

    BLOB读写,可以google到的。使用mysql c API.
      

  2.   

    通过ADO的APPENDCHUNK,GETCHUNK方法来存储二进制流到BLOB字段。
      

  3.   

    我用MySQL c++ connect 怎么存储和读取呢
      

  4.   

    可以用 stmt系统函数,存二进制数据,就不用转义特殊字符了
      

  5.   


    我用longBlob可以存进去, 就像你说的需要转义字符,  
    那我读取的时候 是不是 又要把转义字符给去掉?  也就是还原回去???
      

  6.   

    直接使用:mysql_stmt_send_long_data
    获取数据时,不需要转义符。
    4.x就支持了。
      

  7.   

    这个东西怎么用??  麻烦说一下吧, 我这连个mysql 的说明文档都没有。
      

  8.   

    我看到 PreparedStatement里面有个函数 setBlob可以存储二进制文件但是他的第二个参数是  std::istream * blob不知道这个参数怎么构造?
      

  9.   

           
     FILE* fp = NULL;
      fp = fopen( strMapPath, "rb");
      if ( !fp ) 
      {
      AfxMessageBox( "open file failed");
      return FALSE;
      } fseek(fp, 0L, SEEK_END); 
    int nFileSize = ftell( fp );
    fseek(fp, 0L, SEEK_SET);   char *query,   *p; 
      unsigned  int from_len = 0; 
    nFileSize += 1;  query = (char *)malloc( nFileSize );
      memset(query, 0, nFileSize);
    from_len = fread(query, sizeof(char), nFileSize, fp );
    fclose( fp );
    fp = NULL; DataBuf buffer((char*)query, from_len);
    istream stream(&buffer); PreparedStatement* pPreStmt = NULL;
    ResultSet* pRes = NULL;
    char szSql[512];
    memset(szSql, 0x00, 512);
    sprintf_s(szSql, "insert into tb_picture(id, mapguid, imagedata) values( 1,'5445a', ?)"); try
    {
    pPreStmt = m_dbCon->prepareStatement(szSql);
    pPreStmt->setBlob(1, &stream);
    pPreStmt->executeUpdate();
    }
    catch (SQLException &e)
    {
    CString strError= e.what();   }