你的问题我已经看到了, 你使用了一个OLE字段,然而, 根据官方说法, 这种字段只能用手动的方式加入图片,用程序是不行的, 注意: 这是微软的说法. 设一个OLE字段,然后插入对象就行了(对着字段单击右键)。但是要注意的是,用上述方法加入数据库的图片只能以手动方式保存,需要用程序读取的时候会碰到存储在ole字段中二进制数据与源文件不符的情况。主要是因为ole引擎在图片的前面加了一段信息给他自己用。 不过, 有非官方的解决方案, 至于你的问题, 有一段代码你可以参考: 这是实现图片存入的VC++代码:(具体的还请你参见参考资料) if (() < 1) return ; static char BASED_CODE szFilter[] = "BMP Files (*.bmp)|*.bmp|All Files (*.*)|*.*||"; CFileDialog dlg(TRUE,"BMP",NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,szFilter); if (() == IDOK) { m_strPathName = (); if (m_strPathName != "") { if (("玉照", LPCTSTR(m_strPathName))) { CFile file; if ((LPCTSTR(m_strPathName), CFile::modeRead)) { long length = (long)(); char *pdata = new char[length + 1]; if ((pdata, length) == (DWORD)length) { BITMAPFILEHEADER bmfHeader; DWORD bmfHeaderLen = sizeof(bmfHeader); strncpy((LPSTR)&bmfHeader, (LPSTR)pdata, bmfHeaderLen); if ( == (*(WORD*)"BM") ) { LPSTR lpDIB = pdata + bmfHeaderLen; BITMAPINFOHEADER &bmiHeader = *(LPBITMAPINFOHEADER)lpDIB; BITMAPINFO &bmInfo = *(LPBITMAPINFO)lpDIB; LPVOID lpDIBBits = pdata + ((BITMAPFILEHEADER *)pdata)->bfOffBits; CWindowDC dc(this); HBITMAP hBmp = CreateDIBitmap(, &bmiHeader, CBM_INIT, lpDIBBits, &bmInfo, DIB_RGB_COLORS); if (() != NULL) (); (hBmp); Invalidate(); } } delete[] pdata; pdata = NULL; } } // if ( } // if (m_strPathName != "")