gpt4 book ai didi

delphi - 通过存储过程处理 Blob 数据

转载 作者:行者123 更新时间:2023-12-01 23:01:41 27 4
gpt4 key购买 nike

我有一个将 blob 数据 (VarBinary) 作为参数的存储过程,但我无法让它与 TADOStoredProc 一起使用。

存储过程

ALTER PROCEDURE [dbo].[spAddToSolve]  @SolveData VarBinary(max)
AS
BEGIN
INSERT INTO dbo.ToSolve (Data, SolveStatus)
VALUES (@SolveData, 0)
END

这是我尝试过的两件事。

第一个找不到字段,我错过了什么

procedure AddItem(dbCon : TADOConnection; sourcePath : String);
var
addProc : TADOStoredProc;
field : TField;
dataStream : TFileStream;
blobStream : TStream;

begin
if FileExists(sourcePath) then
begin
dataStream := TFileStream.Create(sourcePath, fmOpenREad or fmShareDenyNone);

try
addProc := TADOStoredProc.Create(nil);
addProc.Connection := dbCon;
addProc.ProcedureName := 'spAddToSolve';
field := addProc.FieldByName('@SolveData'); //Field'@SolveData' not found
blobStream := addProc.CreateBlobStream(field, bmWrite);
blobStream.CopyFrom(dataStream, dataStream.Size);
addProc.Open;

finally
addProc.Free();
dataStream.Free();
end;
end;
end;

不确定如何让该方法工作,我不知道如何将流数据获取到参数值中。

procedure AddItem(dbCon : TADOConnection; sourcePath : String);
var
addProc : TADOStoredProc;
param : TParameter;
field : TField;
dataStream : TFileStream;

begin
if FileExists(sourcePath) then
begin
dataStream := TFileStream.Create(sourcePath, fmOpenREad or fmShareDenyNone);

try
addProc := TADOStoredProc.Create(nil);
addProc.Connection := dbCon;
addProc.ProcedureName := 'spAddToSolve';
param := addProc.Parameters.AddParameter;
param.Name := '@SolveData';
param.DataType := ftBlob;
//not sure what to do next
param.Value := dataStream; //Types are not compatable
addProc.Open;

finally
addProc.Free();
dataStream.Free();
end;
end;
end;

最佳答案

你的第二次尝试是在正确的轨道上。这应该有效:

param.DataType := ftBlob;
param.LoadFromStream(dataStream);

关于delphi - 通过存储过程处理 Blob 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20406260/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com