精华内容
下载资源
问答
  • 源代码:下载简述关键代码如下:1、保存图片数据到数据库//BMP图片保存到数据库try{_RecordsetPtrpRecordset;pRecordset.CreateInstance(__uuidof(Recordset));pRecordset->Open("SELECT * FROM bmp",_variant_t(...

    源代码:下载

    4042e49cc3c0ec9fe7f36e3f02828156.png

    简述关键代码如下:

    1、保存图片数据到数据库

    //BMP图片保存到数据库

    try

    {

    _RecordsetPtr    pRecordset;

    pRecordset.CreateInstance(__uuidof(Recordset));

    pRecordset->Open("SELECT * FROM bmp",_variant_t((IDispatch*)pConnection),adOpenStatic,adLockOptimistic,adCmdText);

    pRecordset->AddNew();

    pRecordset->Fields->Item["bmpid"]->Value = (_variant_t)m_BMPId;        //bmpid

    VARIANT pvList;

    SetPictureToVariant(pvList,(unsigned char *)m_pBMPBuffer);

    pRecordset->Fields->Item["bmpimage"]->AppendChunk(pvList);            //BMP图像文件

    VariantClear(&pvList);

    pRecordset->Update();

    pRecordset->Close();

    AfxMessageBox("BMP图像保存成功!");

    }

    catch(...)

    {

    AfxMessageBox("数据库读取失败");

    return;

    }

    其中SetPictureToVariant如下:

    void CBMPinDBDlg::SetPictureToVariant(VARIANT &pvList, unsigned char *sPicture)

    {

    SAFEARRAYBOUND saBound[1];

    saBound[0].cElements = m_nFileLen;

    saBound[0].lLbound = 0;

    SAFEARRAY *pSA = SafeArrayCreate(VT_UI1, 1, saBound);

    for (long l = 0; l < (long)m_nFileLen; l ++)

    {

    SafeArrayPutElement( pSA, &l, (void*)&sPicture[l]);

    }

    VariantClear(&pvList);

    pvList.vt = VT_UI1 | VT_ARRAY;

    pvList.parray = pSA;

    }

    2、从数据库读取图像文件并且显示在界面

    //从数据库里取BMP图像文件

    try

    {

    _RecordsetPtr    pRecordset;

    char sSql[129];

    sprintf(sSql,"SELECT *FROM bmp WHERE bmpid='%s'",m_BMPId);

    pRecordset.CreateInstance(__uuidof(Recordset));

    pRecordset->Open(sSql,_variant_t((IDispatch*)pConnection),adOpenStatic,adLockOptimistic,adCmdText);

    if (pRecordset->adoEOF)

    {

    CString str;

    str.Format("没有BMPid为: %s 的BMP图像!",m_BMPId );

    AfxMessageBox(str);

    DestroyPhoto();

    Invalidate();

    m_BMPId = "";

    UpdateData(false);

    m_EidtBMPId.SetFocus();

    return;

    }

    _variant_t pvList ;

    long lDataSize = pRecordset->GetFields()->GetItem("bmpimage")->ActualSize;

    m_nFileLen = (DWORD)lDataSize;

    if(lDataSize > 0)

    {

    _variant_t            varBLOB;

    varBLOB = pRecordset->GetFields()->GetItem("bmpimage")->GetChunk(lDataSize);

    //把二进制格式的图片转为图片格式

    if(varBLOB.vt == (VT_ARRAY | VT_UI1))

    {

    if(m_pBMPBuffer = new char[lDataSize+1])

    {

    char *pBuf = NULL;

    SafeArrayAccessData(varBLOB.parray,(void **)&pBuf);

    memcpy(m_pBMPBuffer,pBuf,lDataSize);

    SafeArrayUnaccessData (varBLOB.parray);

    m_nFileLen = lDataSize;

    m_hBitmap = BufferToHBITMAP();

    Invalidate();//在界面显示

    }

    }

    }

    }

    catch(...)

    {

    AfxMessageBox("数据库读取失败");

    return;

    }

    上次写了两篇关于在VC界面显示图片(BMP、JPG)的文章,但是并没有涉及到数据库,所以这次补写了这两篇有关数据库的文章,这两篇文章用的是access的数据库,其它的数据库操作道理是一样的。

    具体的程序请参考附带的例子,例子里面有详细的注释。

    展开全文
  • 源代码:下载简述关键代码如下:1、保存图片数据到数据库//JPG图片保存到数据库try{_RecordsetPtrpRecordset;pRecordset.CreateInstance(__uuidof(Recordset));pRecordset->Open("SELECT * FROM jpg",_variant_t(...

    源代码:下载

    c3988021e65119237ffbc51a95a50c2e.png

    简述关键代码如下:

    1、保存图片数据到数据库

    //JPG图片保存到数据库

    try

    {

    _RecordsetPtr    pRecordset;

    pRecordset.CreateInstance(__uuidof(Recordset));

    pRecordset->Open("SELECT * FROM jpg",_variant_t((IDispatch*)pConnection),adOpenStatic,adLockOptimistic,adCmdText);

    pRecordset->AddNew();

    pRecordset->Fields->Item["jpgid"]->Value = (_variant_t)m_JPGId;//jpgid

    VARIANT pvList;

    SetPictureToVariant(pvList,(unsigned char *)m_pJPGBuffer);

    pRecordset->Fields->Item["jpgimage"]->AppendChunk(pvList); //JPG图像文件

    VariantClear(&pvList);

    pRecordset->Update();

    pRecordset->Close();

    AfxMessageBox("JPG图像保存成功!");

    m_JPGId == "";

    UpdateData(false);

    }

    catch(...)

    {

    AfxMessageBox("数据库读取失败");

    return;

    }

    其中SetPictureToVariant如下:

    void CBMPinDBDlg::SetPictureToVariant(VARIANT &pvList, unsigned char *sPicture)

    {

    SAFEARRAYBOUND saBound[1];

    saBound[0].cElements = m_nFileLen;

    saBound[0].lLbound = 0;

    SAFEARRAY *pSA = SafeArrayCreate(VT_UI1, 1, saBound);

    for (long l = 0; l < (long)m_nFileLen; l ++)

    {

    SafeArrayPutElement( pSA, &l, (void*)&sPicture[l]);

    }

    VariantClear(&pvList);

    pvList.vt = VT_UI1 | VT_ARRAY;

    pvList.parray = pSA;

    }

    2、从数据库读取图像文件并且显示在界面

    //从数据库里取JPG图像文件

    try

    {

    _RecordsetPtr    pRecordset;

    char sSql[129];

    sprintf(sSql,"SELECT *FROM jpg WHERE jpgid='%s'",m_JPGId);

    pRecordset.CreateInstance(__uuidof(Recordset));

    pRecordset->Open(sSql,_variant_t((IDispatch*)pConnection),adOpenStatic,adLockOptimistic,adCmdText);

    if (pRecordset->adoEOF)

    {

    CString str;

    str.Format("没有JPGid为: %s 的JPG图像!",m_JPGId );

    AfxMessageBox(str);

    Invalidate();

    m_JPGId = "";

    UpdateData(false);

    m_EidtJPGId.SetFocus();

    return;

    }

    _variant_t pvList ;

    long lDataSize = pRecordset->GetFields()->GetItem("jpgimage")->ActualSize;

    m_nFileLen = (DWORD)lDataSize;

    if(lDataSize > 0)

    {

    _variant_t            varBLOB;

    varBLOB = pRecordset->GetFields()->GetItem("jpgimage")->GetChunk(lDataSize);

    //把二进制格式的图片转为图片格式

    try

    {

    if(varBLOB.vt == (VT_ARRAY | VT_UI1))

    {

    if(m_pJPGBuffer = new char[lDataSize+1])

    {

    char *pBuf = NULL;

    SafeArrayAccessData(varBLOB.parray,(void **)&pBuf);

    memcpy(m_pJPGBuffer,pBuf,lDataSize);

    SafeArrayUnaccessData (varBLOB.parray);

    m_nFileLen = lDataSize;

    //m_pJPGBuffer -> pPicture

    HGLOBAL hMem = ::GlobalAlloc( GMEM_MOVEABLE, m_nFileLen );

    LPVOID lpBuf = ::GlobalLock( hMem );

    memcpy(lpBuf,m_pJPGBuffer,m_nFileLen);

    ::GlobalUnlock( hMem );

    if ( CreateStreamOnHGlobal( hMem, TRUE, &pStream ) !=S_OK )

    return ;

    if ( OleLoadPicture( pStream, m_nFileLen, TRUE, IID_IPicture, ( LPVOID * )&pPicture ) !=S_OK )

    return ;

    Invalidate();//在界面显示

    }

    }

    }

    catch(...)

    {

    AfxMessageBox("从数据库中读取jpg图像有错!");

    return;

    }

    }

    }

    catch(...)

    {

    AfxMessageBox("数据库读取失败");

    return;

    }

    具体的程序请参考附带的例子,例子里面有详细的注释。

    展开全文
  • 因为Qt才开始入门。对文件的操作还不是很熟练。经过一段时间查找终于找出一些适用于入门的代码。QDir d;d.mkpath("D:/123");file = new QFile("D:/123/tmp");...第一行 创建一个目录的对象第2行 创建...

    因为Qt才开始入门。对文件的操作还不是很熟练。经过一段时间查找终于找出一些适用于入门的代码。

    QDir d;

    d.mkpath("D:/123");

    file = new QFile("D:/123/tmp");

    file->open(QFile::WriteOnly);

    恩其实当时要找的就是这么点代码可是网上的Qt很少(相对于VC)或者说内容很多,不是针对性的。

    第一行 创建一个目录的对象

    第2行 创建一个目录,就是文件夹。其实文件夹就是目录,你在同一个硬盘下复制东西都很快,就是因为硬盘只改变了目录!

    第3行 创建以个tmp的文件放到你刚创建的文件夹内。这里的地址必须正确,如果是空地址或者错误的地址都不能成功创建文件。就是这个原因我绕了好大圈子,不过也学习了不少东西。

    第4行打开文件,大家可以试下 没有第4个文件显示不出来

    其实这知识就是这么简单 可是网上搜 自己问 自己理解却用了2天时间。结果还是出来了。所以不管遇到什么样的困难和问题,只要自己做下去,就能出来!

    下面是另存为功能对话框选择保存路径即可。(简介版的)

    方法1: QString fileName(tr("ok.txt")) ;

    QString dir = QFileDialog::getExistingDirectory(this, tr("Open Directory"),

    "/home",

    QFileDialog::ShowDirsOnly

    | QFileDialog::DontResolveSymlinks);

    QDir d;

    d.mkpath(dir);//可以不用,因为路径已经有了,就不用mk了

    QFile file(dir+"/"+fileName);

    file.open(QFile::WriteOnly);

    方法2:-------------保存

    QString fileName = QFileDialog::getSaveFileName(this, tr("Save As"), "", tr("Curve TagName Files (*.TXT)"));

    if (!fileName.isEmpty())

    {

    //一些处理工作,写数据到文件中

    QList& plotCurves = m_plot->getPlotCurves();

    QFile file(fileName);

    if (!file.open(QIODevice::ReadWrite | QIODevice::Text))

    QMessageBox::critical(this, tr("Error"), tr("Failed to open file \"%1\" for save!").arg(fileName), QMessageBox::Ok);

    //write file

    QTextStream wr(&file);

    for(int i=0; i

    {

    wr <title().text() <

    }

    file.close();

    }

    else

    return;

    方法3:---------另存为

    QString path;

    path = QDir::currentPath() + "/CscanData/Cscan.bmp";

    QString filename = QFileDialog::getSaveFileName(this, tr("Save As"), path, tr("Image Files (*.bmp)"));

    if(!filename.isNull())

    {

    //一些处理工作,复制         QFile::copy(path+ filename);    }     else     return;

    展开全文
  • VC中使用OpenGL画图,需要使用这些数据(深度数据)做显示用。在Matlab下使用语句:csvwrite(‘depthMap‘,depthMap);//后面的depthMap是数组变量,前面的depthMap是csv文件名。函数ReadCsv是读取csv文件(二维数组)...

    由于图像处理用到Matlab的一些算法,得到一些数组数据(三维重构的深度数据)。

    在VC中使用OpenGL画图,需要使用这些数据(深度数据)做显示用。

    在Matlab下使用语句:csvwrite(‘depthMap‘,depthMap);

    //后面的depthMap是数组变量,前面的depthMap是csv文件名。

    函数ReadCsv是读取csv文件(二维数组)到指定变量depthMap。

    变量的定义:

    double depthMap[240][320] = {0};//深度图

    调用函数:

    //读取csv文件:深度图depthMap.csv

    ReadCsv(depthMap);//调用函数读取CSV文件中的数据

    void ReadCsv(double depthMap[][320])

    {

    FILE* fd;

    errno_t err = fopen_s(&fd, "depthMap","r");

    if( err )

    printf_s( "The file depthMap.csv was not opened\n" );

    else

    {

    // Set pointer to beginning of file:

    //fseek( fd, 0L, SEEK_SET );

    int i = 0;

    while (i < 240)

    {

    int j = 0;

    double a = 0;

    while (j < 319)

    {

    fscanf(fd, "%lf,", &a);

    depthMap[i][j] = a;

    ++ j;

    }

    fscanf(fd, "%lf\n", &a);

    depthMap[i][j] = a;

    ++ i;

    }

    }

    fclose(fd);

    }

    原文:http://blog.csdn.net/lzy2014/article/details/41944859

    展开全文
  • 是的,后面三大题是要把文件拖到VC然后保存就得分基本要求1、熟悉VisualC++集成开发环境。2、掌握结构化程序设计的方法,具有良好的程序设计风格。3、掌握程序设计中简单的数据结构和算法并能阅读简单的程序。4、...
  • 08年计算机二级考试C语言:剖析VC中的文件操作5分类:计算机等级|更新时间:2016-07-07|来源:中华网考试VC的文件操作各种关于文件的操作在程序设计中是十分常见,如果能对其各种操作都了如指掌,就可以根据实际情况...
  • 思路和方法我们在Windows环境下开发某些具有数据备份和恢复等功能的软件时,需要在拷贝文件及其目录时把文件和目录的所有属性,包括日期和时间都能完全地保存并还原出来。但我们发现,在Windows环境下没有提供任何...
  • VC的MySQL编程

    2021-01-20 23:49:15
    1、找来MySQL(Win32)安装目录下的include文件夹,将其添加到VC头文件目录列表中;(VC6 -> Options ->Directories -> 加入此目录)(VC2005 ->工具 ->选择 ->项目和解决方案 ->...
  • 我现在把Excel表格嵌入到MFC单文档界面,然后对嵌...1、首先,打开媒介工具“记事本”,将word文件里需要导入的数据,复制粘贴到记事本当中,然后保存成为txt文件,本例中将txt文件取名为“数据源.txt”。...
  • VC6的使用

    2021-05-20 07:08:43
    使用之前我们先准备一段代码。...");system("pause");return0;}1.创建工程创建文件之前我们先创建一个工程,然后在添加源文件。...选择空工程。2.创建文件1)创建完工程之后我们来创建文件。2)然后会...
  • 关键词:移动开发Android NDK VC6Eclipse作为常用的Anddroid IDE开发环境,得到了广泛的应用。但是因为其系统庞大,如果机器的性能差一些,就得忍受其蜗牛般的速度。在做NDK开发的时候,我们只需要编译C/C++代码,有...
  • VC维(VC Dimension)

    千次阅读 2020-12-25 17:44:15
    VC Dimension:全称是Vapnik-Chervonenkis dimension。其用来衡量一个模型的复杂度,定义为:在该模型对应的空间中随机撒x点,然后对其中的每个点随机分配一个2类标签,使用你的模型来分类,并且要分对,请问x至多是...
  • vc ado访问数据库方法

    2021-03-07 06:29:39
    一、ADO简介ADO(ActiveXDataObject)是Microsoft数据库应用程序开发的新接口,是建立在OLEDB之上的高层数据库访问技术,请不必...本文将详细地介绍在VC下如何使用ADO来进行数据库应用程序开发,并给出示例代码。二、...
  • VC远程访问数据库

    2021-01-20 01:42:43
    如果是外面IP,下面的strSQL="Provider=SQLOLEDB;Server=Gooyan;DataBase=SkillsBox;UID=sa;PWD=aaaaaaaa";server改为IP就可以了。局域网的可以是IP,也可以使机器名按下面的步骤1.stdafx.h中加入#import "C:\...
  • vc数据库存储图片

    2021-01-20 00:27:48
    下面给出用VC,VB如何操作图像文件存取数据库的原码,帮助一些还没有掌握方法的朋友(均用ADO连接数据库)。一、VC把一个文件存入数据库CFile imagefile; if(0 == imagefile.Open("d:\\user\\bmp.bmp",CFile::modeRead...
  • 网上的都是废话一大堆,好不容易修改的可以用了,测试了一下,写如几百MB的文件没问题,至于几百GB的,不得而知的,蛋疼的请自己尝试。// mysqlwritefile.cpp : Defines the entry point for the console ...
  • // 下面对系统中的所有进程进行枚举,并保存其信息 do{ // 把进程对应的文件路径名填入列表框 int index = m_ctlwndList.AddString(pe.szExeFile); // 设置列表框中该项的Data相应的进程的ID号,利于以后终止该进程...
  • 在Win10中安装VC6

    2021-05-20 09:11:05
    在Win10中安装VC6-------------------------------------1、新编Win32API函数大全;2、精通Windows.API 函数、接口、编程实例;3、MFC类库参考手册;4、Microsoft Win32 程序员参考大全;--------------------------...
  • VC2012链接mySql

    2021-01-27 00:51:27
    //保存查询到的数据到result if(result) { int i,j; cout(unsigned long)mysql_num_rows(result)(i=0;fd=mysql_fetch_field(result);i++)//获取列名 { strcpy_s(column[i],fd->name); } j=mysql_num_fields(result);...
  • VC程序播放音乐必备

    2021-05-20 11:12:55
    对于程序员来说,可以把MCI理解为设备面板上的一排按键,通过选择不同的按键(发送不同的MCI命令)可以让设备完成各种功能,而不必关心设备内部实现。 比如,对于play,视盘机和CD机有不同的反应(一个是播放视频,...
  • VC连接MySql

    2021-01-18 20:16:11
    VC连接MySql一丶MySql 需要了解的知识VC连接MySql 需要了解几个关键的API:MYSQL * stdcall mysql init (MYSQL *mysql): 初始化一个数据库.如果传NULL.则返回一个数据库对象mysql_real connect(); 与MySql 数据库创建...
  •  //按键保存 int sum = 1, over = 0; //蛇的长度, 游戏结束(自吃或碰墙) int dx[4] = {0, 0, -1, 1}; //左、右、上、下的方向 int dy[4] = {-1, 1, 0, 0}; struct Snake //蛇的每个节点的数据类型 { int x, y...
  • 解决方法: 解决方案很简单,将源代码用gb2312编码保存,操作方法:vs中的文件->另存为->保存下拉框选择->重新编码->选择gb2312,保存后重新编译即可。 而如果是unicode程序,则统一在代码中采用L””方式,就不会...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 95,315
精华内容 38,126
关键字:

vc选择保存目录