社区
数据库
帖子详情
如何向SQL数据库的一个表中插入大文件!
yangyan_hit
2005-10-05 08:51:27
要在表中插入大文件,表的列属性该如何设置???
具体该怎么插入??谢谢!
...全文
324
9
打赏
收藏
如何向SQL数据库的一个表中插入大文件!
要在表中插入大文件,表的列属性该如何设置??? 具体该怎么插入??谢谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zh_zh_y
2005-11-11
打赏
举报
回复
我也正在实现这个功能,但是还有点问题。具体问题看:
http://community.csdn.net/Expert/topic/4381/4381022.xml?temp=.6445124
zh_zh_y
2005-11-11
打赏
举报
回复
SQL Server数据库不支持BLOB
sdf123321
2005-11-10
打赏
举报
回复
gz
kugou123
2005-10-10
打赏
举报
回复
用BLOB字段
goodboyws
2005-10-09
打赏
举报
回复
用Image字段就可以,给你一段代码
BOOL CDBAction::SaveBLOB(CString strSegName, UINT& nDataSize, char* pBuf)
{
_bstr_t bstrSegName = strSegName;
VARIANT varBLOB;
SAFEARRAY *psa;
SAFEARRAYBOUND rgsabound[1];
// 验证记录集是否已打开
if (!GetRecordSetState())
{
TRACE("记录集对象未打开,无法执行保存BLOB数据!\n");
return FALSE;
}
// 保存BLOB数据
if(nDataSize > 0)
{
rgsabound[0].lLbound = 0;
rgsabound[0].cElements = nDataSize;
psa = SafeArrayCreate(VT_UI1, 1, rgsabound);
for (long i = 0; i < (long)nDataSize; i++)
SafeArrayPutElement (psa, &i, pBuf+i);
varBLOB.vt = VT_ARRAY | VT_UI1;
varBLOB.parray = psa;
m_pRecordset->GetFields()->GetItem(bstrSegName)->AppendChunk(varBLOB);
}
m_pRecordset->Update();
return TRUE;
}
莫蘭大少
2005-10-07
打赏
举报
回复
[转帖]用VC存取数据库中的大对象
在用Visual C++编写应用程序时,常会遇到如何存取数据库中大对象的问题。大对象文档以二进制数据形式保存在BLOB类型的字段中,这些大对象可能是Word、Execl或图片文件等,目前多数数据库都支持BLOB类型的字段。
VC存取这些大对象数据有众多方法,如OLE、ActiveX等,事实上VC的MFC提供了一个很方便的实现方法,即利用MFC提供的CLongBinary类可以方便地实现存取BLOB字段。下面笔者将举例说明。
首先用以下SQL语句建一个含BLOB字段的数据表:
CREATE TABLE REPORTTABLE(REGISTERNUM CHAR(12) NOT NULL,REPORT BLOB(5M),PRIMARY KEY(REGISTERNUM));
建完该表后,配置好ODBC数据源,设定数据源名为ABCDB。
我们用VC的MFC AppWizard建一个新的Project,设定项目名为ABC,下一步选Single document,在提示你想包含什么样的数据库支持时,选Header files only,然后完成建立。
接着在Resources的Dailog资源中新建一个FormView,打开该FormView,启用ClassWizard,建立一个新类,设定类名叫CReportRecordSet,Base Class选CRecordSet,然后选ABCDB为数据源,再选择表REPORTTABLE,启动ClassWizrd,并建立新类CReportFormView,Base Class为CRecordView,选Recordset时,选CReportRecordSet。
打开ReportRecordSet.h,找到该行:CString m_REPORT; 改为CLongBinary m_REPORT;这样程序就知道m_REPORT是和BLOB字段交换数据。同样,我们还需要修改另外几处,打开ReportRecordSet.cpp后,删除m_REPORT = _T("");一句。再找到RFX_Text(pFX, _T("[REPORT]"), m_REPORT);一句,将其改为RFX_LongBinary(pFX, _T("[REPORT]"), m_REPORT); ODBC方法存取数据库时使用RFX_LongBinary;DAO方法则用DFX_LongBinary。
再次打开FormView,添加一个Edit控件,并用ClassWizard将它和member variable m_pSet-〉m_ REGISTERNUM关联,然后在FormView上增加三个按键,Caption名分别叫“取得Word文档”、“更新word文档”、“新增word文档”。并分别为这三个按键建立各自的Function,然后我们为这三个按键增加相应的代码。在按键“取得Word文档”的Function中加入如下代码:
try //该程序的所在当前目录是e:\qc\abc\
{ if (m_pSet-〉IsEOF())
AfxMessageBox("没有该小组的成果报告");
else {//下面检测临时文件tyj.doc是否存在
HANDLE hFind;
WIN32_FIND_DATA findData = {0};
hFind=FindFirstFile("e:\\qc\\abc\\tyj.doc",&&findData);
// FindFirstFile是Windows API 函数
if(hFind = = INVALID_HANDLE_value)
AfxMessageBox("不存在临时文件");
else
{AfxMessageBox("有临时文件");
DeleteFile("e:\\qc\\abc\\tyj.doc");
//利用API函数删除该临时文件
}
CString strFileName="e:\\qc\\abc\\tyj.doc";
CFile outFile(strFileName,CFile::modeCreate|CFile::modeWrite);
//modeCreate指示构造函数创建一个新文件
//下面这段把已经在内存中的BLOB字段数据内容写到临时生成的文件tyj.doc中
LPSTR buffer = (LPSTR)GlobalLock(m_pSet-〉m_REPORT.m_hData);
outFile.WriteHuge(buffer,m_pSet-〉m_REPORT.m_dwDataLength);
GlobalUnlock(m_pSet-〉m_REPORT.m_hData);
outFile.Close();
ShellExecute(NULL,NULL,_T("tyj.doc"),NULL,_T("e:\\qc\\abc\\"),NULL);
//下面执行外部程序,Word会自动启动并打开tyj.doc} }
catch(CExceptionpE)
{ pE-〉ReportError();
pE-〉Delete();
return; }
在按键“更新word文档”的Function中加入以下程序代码:
m_pSet-〉Edit(); // 声明编辑当前记录
UpdateData(TRUE);
CFile fileword;
CFileStatus fileStatus;
CString fileLocate;
static char BASED_CODE szFilter[] = "WORD Files (.doc)|.doc||";
// 下面将弹出典型的打开文件对话框,您可以选择任何目录下的.doc文件
CFileDialog dlg(TRUE,NULL,NULL,0,szFilter,this);
if(dlg.DoModal()= =IDOK)
fileLocate=dlg.GetPathName();
else
fileLocate="";
if(fileLocate= ="")
AfxMessageBox("您没选文件");
else{
fileword.Open(fileLocate,CFile::modeRead);
fileword.GetStatus(fileStatus);
m_pSet-〉m_REPORT.m_dwDataLength=fileStatus.m_size;
HGLOBAL hGlobal = GlobalAlloc(GPTR,fileStatus.m_size);
m_pSet-〉m_REPORT.m_hData = GlobalLock(hGlobal);
fileword.ReadHuge(m_pSet-〉m_REPORT.m_hData,fileStatus.m_size);
//把您选择的文件的数据写入m_pSet-〉m_REPORT
m_pSet-〉SetFieldDirty(&&m_pSet-〉m_REPORT);
m_pSet-〉SetFieldNull(&&m_pSet-〉m_REPORT,FALSE);
m_pSet-〉Update(); // 更新记录
GlobalUnlock(hGlobal); }
上述代码只要稍做修改,即可把Execl等各类文件存入数据库中。对应按键“新增word文档”只需要复制“更新Word文档”中的代码,并把m_pSet-〉Edit();换成m_pSet-〉AddNew();即可。完成上述步骤后,打开abc.cpp,把RUNTIME_CLASS(CAbcView));这句换成RUNTIME_CLASS(CReportFormView)); 这样程序启动时就显示了该FormView。
cyberkit
2005-10-06
打赏
举报
回复
我建议你研究一下ado中的stream对象
balloy
2005-10-06
打赏
举报
回复
http://www.kehui.net/html/article/26/26073.html
oyljerry
2005-10-06
打赏
举报
回复
blob
学习
sql
数据库
课程
SQL
Server
数据库
入门教程 如何新建
数据库
、新建表、添加内容、数据类型和常规的
数据库
的增、删、改、查等语法。
如何使用
SQL
系列 之 如何在
SQL
中
插入
数据
结构化查询语言,通常被称为
SQL
,在允许您将数据
插入
表中
方面提供了极大的灵活性。例如,你可以使用VALUES关键字指定单独的行数据,使用SELECT查询从现有
表中
复制整组数据,以及以使
SQL
自动
插入
数据的方式定义列。在本指南中,我们将复习如何使用
SQL
的语法添加数据表与这些方法。通过阅读本指南,你学习了几种向
表中
插入
数据的不同方法,包括使用VALUES关键字指定单独的行数据,使用SELECT查询复制整个数据集,以及定义
SQL
将自动
插入
数据的列。这里列出的命令应该适用于任何使用
SQL
的
数据库
管理系统。
SQL
Server csv
文件
数据
插入
到
数据库
表中
通常开发中,会有两个
数据库
Live和Develop,在Live上拿到一张表的部分数据如何同步到Develop的
数据库
表中
,别人提供的Live数据可能是
一个
文档,甚至是
一个
txt
文件
,这时怎么去更新呢?
SQL
Server
数据库
表的基本操作(批量
插入
、删除、查询数据,删除
表中
重复数据方法)
实验二 实验名称:
数据库
表的基本操作与表内数据操作 实验目的: 掌握
数据库
表创建方法(交互式、T-
SQL
法) 掌握修改
数据库
表结构的方法 掌握删除
数据库
表的方法 掌握交互式EXCEL
文件
录入数据至
数据库
表的方法 掌握T-
SQL
语句向
数据库
表中
插入
数据的方法 掌握修改与删除
数据库
表中
数据的方法 掌握选择性复制
数据库
表的方法 实验意义: 通过实验学习,对于
SQL
Server中
数据库
表的基本创建方法,通过交互式与T-
SQL
语句熟练
数据库
表的创建、设计、修改与删除。 针对
数据库
的操作内容,通
SQL
Server 中导入外部
数据库
文件
导入外部
数据库
文件
,my
sql
的很简单,直接运行
sql
文件
就行了,但如果是
SQL
Server的
数据库
文件
(后缀为.mdf,.ldf),这样是不行的。今天就和大家分享一下我向
SQL
Server 中导入
数据库
文件
的过程。 首先(重点),你电脑得安装了
SQL
Server(我的是
SQL
ServerR2) 在
Sql
Server Configuration Manager中停止
SQL
Server 在Microsoft
SQL
Server Management Studio新建
一个
同名的
数据库
。.
数据库
4,012
社区成员
39,817
社区内容
发帖
与我相关
我的任务
数据库
VC/MFC 数据库
复制链接
扫一扫
分享
社区描述
VC/MFC 数据库
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章