问题:
现在有一批的cad文件,想插入sql server2k数据库中,数据库中的字段数据类型是
image,用什么语句可以实现插入和查询呢?
btw:是不是用sql server2k的查询分析器不能实现图片的插入和查询呢?
3x!
现在有一批的cad文件,想插入sql server2k数据库中,数据库中的字段数据类型是
image,用什么语句可以实现插入和查询呢?
btw:是不是用sql server2k的查询分析器不能实现图片的插入和查询呢?
3x!
2。Following code snippet shows how to do this in the actual code:
3。uses an Access database to store the images
// Store the Image to database table
//
try
{
dbImages.Open();
dbImages.AddNew(); CFile fileImage;
CFileStatus fileStatus; fileImage.Open("c:\\winnt\\winnt256.bmp", CFile::modeRead);
fileImage.GetStatus(fileStatus); dbImages.m_BLOBName = fileImage.GetFileTitle();
dbImages.m_BLOBImage.m_dwDataLength = fileStatus.m_size; HGLOBAL hGlobal = GlobalAlloc(GPTR,fileStatus.m_size);
dbImages.m_BLOBImage.m_hData = GlobalLock(hGlobal); fileImage.ReadHuge(dbImages.m_BLOBImage.m_hData,fileStatus.m_size); dbImages.SetFieldDirty(&dbImages.m_BLOBImage);
dbImages.SetFieldNull(&dbImages.m_BLOBImage,FALSE);
dbImages.Update(); GlobalUnlock(hGlobal); dbImages.Close(); pList->InsertItem(0,fileImage.GetFileTitle());
}
catch(CException* pE)
{
pE->ReportError();
pE->Delete();
return;
}
// To restore image from db table
CdbImages dbImages(&theApp.m_DB);
CString strFileName = pList->GetItemText(nIndex,0);
dbImages.m_strFilter.Format("BLOBName = '%s'",strFileName);
try
{
dbImages.Open();
if (dbImages.IsEOF())
AfxMessageBox("Unable to get image from db");
else
{
char tmpPath[_MAX_PATH+1];
GetTempPath(_MAX_PATH,tmpPath); strFileName.Insert(0,tmpPath);
CFile outFile(strFileName,CFile::modeCreate|CFile::modeWrite);
LPSTR buffer = (LPSTR)GlobalLock(dbImages.m_BLOBImage.m_hData);
outFile.WriteHuge(buffer,dbImages.m_BLOBImage.m_dwDataLength);
GlobalUnlock(dbImages.m_BLOBImage.m_hData);
outFile.Close(); theApp.OpenDocumentFile(strFileName);
} dbImages.Close();}
catch(CException* pE)
{
pE->ReportError();
pE->Delete();
return;
}
重载crecordset
重写DoFieldExchange( CFieldExchange* pFX )
RFX_Binary( pFX, youfieldname, m_pbyte, 300000);//CByteArray *m_pbyte 长度你自己可以定长一些或短一些或动态。m_pbyte //为你的图片数据。
使用时:yourecordset.addnew();
yourecordset.m_pbyte = pbmp ;
yourecordset.update();