社区
数据库
帖子详情
如何更新视图?
Turelies
2004-08-16 10:39:22
在SQL server2000中!
...全文
150
2
打赏
收藏
如何更新视图?
在SQL server2000中!
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
gongcengshi
2004-08-16
打赏
举报
回复
try
{
pRecordset.CreateInstance(__uuidof(Recordset));
pRecordset->Open((_bstr_t)strSQL, _variant_t(pConnection, true),
adOpenStatic,adLockOptimistic,adCmdText);
if(!pRecordset->EndOfFile)
{
long nSize = pRecordset->GetFields()->GetItem("GRAPHIC")->ActualSize;
if(nSize > 0)
{
_variant_t varBLOB;
varBLOB=pRecordset->GetFields()->GetItem("GRAPHIC")->GetChunk(nSize);
if(varBLOB.vt == (VT_ARRAY | VT_UI1))
{
if(BYTE *pBuffer = new BYTE [nSize+1]) ///ÖØÐÂÉêÇë±ØÒªµÄ´æ´¢¿Õ¼ä
{
char *pBuf = NULL;
SafeArrayAccessData(varBLOB.parray,(void **)&pBuf);
memcpy(pBuffer,pBuf,nSize); ///½»º³åÇøm_pBMPBuffer
SafeArrayUnaccessData (varBLOB.parray);
CFile f;
CFileException e;
CFileStatus fStatus;
CString strFileType = (LPCTSTR)(_bstr_t)pRecordset->GetCollect(_variant_t("DRAWINGNAME"));
strFileType = strFileType.Right(4);
int n = strFileType.GetLength();
strName = strFileType.Left(n-4);
CString FilePath = "E:\\";
FilePath = FilePath+strName+strFileType;
if(f.Open(FilePath, CFile::modeWrite | CFile::modeCreate | CFile::typeBinary, &e))
{
f.Write(pBuffer, nSize);
f.GetStatus(FilePath, fStatus);
f.Close();
}
delete [] pBuffer;
pBuf=0;
m_pNetFind->ShowWindow(SW_HIDE);
FileOpen(FilePath); //通过文件名字打开文件的,
}
}
}
}
pRecordset->Close();
pRecordset.Release();
}
catch(_com_error &e)
{
CString err;
err.Format("%d\n%s", e.Error(), (char *)e.Description());
AfxMessageBox(err);
return FALSE;
}
在oracle中我建立视图,想从视图中得到long raw类型的字段“GRAPHIC”中的文件内容,但是long nSize = pRecordset->GetFields()->GetItem("GRAPHIC")->ActualSize;的取值不正确,就无法从数据库得到正确的文件数据,希望大家帮忙解决一下!
gongcengshi
2004-08-16
打赏
举报
回复
try
{
pRecordset.CreateInstance(__uuidof(Recordset));
pRecordset->Open((_bstr_t)strSQL, _variant_t(pConnection, true),
adOpenStatic,adLockOptimistic,adCmdText);
if(!pRecordset->EndOfFile)
{
long nSize = pRecordset->GetFields()->GetItem("GRAPHIC")->ActualSize;
if(nSize > 0)
{
_variant_t varBLOB;
varBLOB = pRecordset->GetFields()->GetItem("GRAPHIC")->GetChunk(nSize);
if(varBLOB.vt == (VT_ARRAY | VT_UI1))
{
if(BYTE *pBuffer = new BYTE [nSize+1]) ///ÖØÐÂÉêÇë±ØÒªµÄ´æ´¢¿Õ¼ä
{
char *pBuf = NULL;
SafeArrayAccessData(varBLOB.parray,(void **)&pBuf);
memcpy(pBuffer,pBuf,nSize); ///¸´ÖÆÊý¾Ýµ½»º³åÇøm_pBMPBuffer
SafeArrayUnaccessData (varBLOB.parray);
//ÎļþдÈë²Ù×÷
CFile f;
CFileException e;
CFileStatus fStatus;
CString strFileType = (LPCTSTR)(_bstr_t)pRecordset->GetCollect(_variant_t("DRAWINGNAME"));
strFileType = strFileType.Right(4);
int n = strFileType.GetLength();
strName = strFileType.Left(n-4);
// strFileType
// CString strGYinfo = "currectOpenDoc";
CString FilePath = "E:\\";
FilePath = FilePath+strName+strFileType;
if(f.Open(FilePath, CFile::modeWrite | CFile::modeCreate | CFile::typeBinary, &e))
{
f.Write(pBuffer, nSize);
f.GetStatus(FilePath, fStatus);
f.Close();
}
delete [] pBuffer;
pBuf=0;
m_pNetFind->ShowWindow(SW_HIDE);
FileOpen(FilePath);
}
}
}
}
pRecordset->Close();
pRecordset.Release();
}
catch(_com_error &e)
{
CString err;
err.Format("%d\n%s", e.Error(), (char *)e.Description());
AfxMessageBox(err);
return FALSE;
}
在oracle中我建立视图,想从视图中得到long raw类型的字段“GRAPHIC”中的内容但是long nSize = pRecordset->GetFields()->GetItem("GRAPHIC")->ActualSize;的取值不正确,希望大家帮忙解决一下!
【三桥君】所有的
视图
都可以
更新
吗?如果不是,哪些
视图
可以
更新
,哪些不可以?
本文AI专家三桥君探讨数据库
视图
的
更新
限制问题。并非所有
视图
都可
更新
,例如计算平均值的
视图
无法直接
更新
。行列子集
视图
通常允许
更新
,而其他类型
视图
的
更新
则因数据库系统而异。三桥君通过实例分析
视图
更新
的限制条件,并指出不同系统对复杂
视图
更新
的差异性处理。掌握
视图
更新
机制有助于优化数据管理效率,建议结合事务管理、索引优化等高级功能提升数据库操作能力。
Mysql
视图
更新
详解
MySQL
视图
更新
操作示例解析 摘要:本文通过四个典型示例分析MySQL
视图
的可
更新
性。基础
视图
(含主键且单表)支持
更新
、删除和插入操作,而缺少关键列、含JOIN或多表关联的
视图
则存在操作限制。聚合
视图
(如GROUP BY)因涉及计算值而无法直接修改。关键点在于:
视图
必须能准确定位基表行(含主键或唯一列)且仅关联单个基表才可
更新
。多表
视图
和聚合
视图
由于数据映射关系复杂或被计算产生,MySQL无法保证操作的安全性和确定性。
MySQL
视图
更新
1.
视图
不是表,不能直接存储数据,是一张虚拟的表,
视图
和数据库的表存在着对应的关系,我们在某些情况下是可以通过
视图
来操作数据库的表,这样可以简化查询操作(一般情况下
视图
是用来查询用的),在某种条件下是可以利用
视图
来
更新
数据库表中的数据的2.一般情况下,在创建有条件限制的
视图
时,加上 with check option命令。
mysql如何
更新
视图
,MySQL
更新
视图
更新
视图
是指通过
视图
,来
更新
、插入、删除基本表中的数据因为,
视图
是一个虚拟表,其中没有数据,所以,当通过
视图
更新
数据时,其实,是在
更新
基本表中的数据,如果对
视图
中的数据进行增加,或者删除操作时,实际上是在对其基本表中的数据,进行增加或者删除操作UPDATE语句使用UPDATE语句
更新
视图
MySQL中,可以使用UPDATE语句,
更新
视图
更新
view_stu
视图
中,chinese字段对应的数据值,将字...
SQL语法——创建
视图
、可
更新
视图
CREATE VIEW语句简介 CREATE [ALGORITHM = {MERGE | TEMPTABLE | UNDEFINED}] VIEW view_name [(column_list)] AS select-statement;
视图
的处理算法 使用MERGE算法,MySQL首先将输入查询与SELECT定义
视图
的语句组合成单个查询。然后MySQL执行组合查询以返回结果集。 如果SELECT语句包含聚合函数,例如 MIN,MAX,SUM,COUNT,AVG 或DISTINCT,G
数据库
4,017
社区成员
39,805
社区内容
发帖
与我相关
我的任务
数据库
VC/MFC 数据库
复制链接
扫一扫
分享
社区描述
VC/MFC 数据库
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章