如何将AUOTOCAD生成存储为文件SQL中的BOLB型变量(100分)

  • 主题发起人 主题发起人 oldbone
  • 开始时间 开始时间
1、如何将AUOTOCAD生成的文件(DWG、DXF)存储为文件SQL中的BOLB型变量
2、如何读取SQL中的BOLB型变量
3、如何显示
4、最好有源代码
 
恳请各位大虾:放马在此一住,留下金玉良言!!!
小弟在此有礼了!!!
 
我家里的机器上原来写了一个,可被CIH给毁了,最近
没有时间写,顺便问一下,你的数据库平台是什么?
准备用什么控件!
 
chyw123:
能否告诉我你的大致思路,拜托!!!
数据库用的是SQL 7.0,至于控件一时还没有更好的思路,望指教!!!
 
我的数据库用的是DB2,将DWG文件存入BLOB,用Stream来实现存入和取出,取出存成
临时文件,再用控件进行显示,可以实现缩放之类的操作。
因上网不太方便,发邮件吧,有情况,请发:chyw123@163.com
 
这两个可以:SQL Server和Oracle都实验过。
function DBToDisk(Query_String, Column_Name, Target_Name: string): Boolean;
function DiskToDB(Query_String, Column_Name,Target_Name: string): Boolean;


function TForm1.DBToDisk(Query_String, Column_Name, Target_Name: string): Boolean;
var
l_FileStream: TFileStream;
begin
{从数据库中取出文稿}
with Query1 do
begin
Close;
SQL.Text := Query_String;
Open;
end;

{将数据库中Image字段保存到硬盘下,存为文件}
l_FileStream := TFileStream.Create(Target_Name, fmOpenWrite or fmCreate);
l_FileStream.Position := 0;
TBlobField(Query1.FieldByName(Column_Name)).SaveToStream(l_FileStream);
l_FileStream.Free;

Query1.Close;
Result := True; //所有任务彻底完成,Function返回True
end;

function TForm1.DiskToDB(Query_String, Column_Name,Target_Name: string): Boolean;
var
l_FileStream: TFileStream;
begin
with Query1 do
begin
Close;
SQL.Clear;
SQL.Text := Query_String;
Open;
end;
Query1.Edit; {直接进入Edit,取消Append}

l_FileStream := TFileStream.Create(Target_Name, fmShareDenyNone);
l_FileStream.Position := 0;

TBlobField(Query1.FieldByName(Column_Name)).loadfromStream(l_FileStream);
Query1.Post;
l_FileStream.Free;

Result := True; //一切任务完成,返回True
end;
 
显示的时候,不将流保存为文件,直接用ole.loadfromstream
能否显示?
我的文件是dwg的。
 
也许能,那个“流”比实际的文件好像仅仅多一个“头”
你需要仔细研究一下。
 
后退
顶部