PDA

View Full Version : ثبت استرم در sql2012



khoshblagh
یک شنبه 17 بهمن 1395, 12:44 عصر
با سلام خدمت دوستان
من با کد زیر سعی در ثبت یک استرم در جدول مینمایم. ولی مشکل نوع رشته با نوع استرم دارد . در صورت امکان راهنمایی بفرمائید.متشکرم


BlobStream := TMemoryStream.Create;
BlobStream.Position := 0;
cmdUpdateData.CommandText:='INSERT INTO tblPerson('+
',SalMah,Aks)values('+
QuotedStr(strSalMah)+','+
(BlobStream)+')';
cmdUpdateData.CommandType :=cmdText;
cmdUpdateData.Execute ;

یوسف زالی
دوشنبه 18 بهمن 1395, 11:48 صبح
سلام.
معمولا برای ثبت استریم در جدول یا از Bulk استفاده می شه (در صورتی که استریم یک فایل باشه و مسیرش در دسترس اس کیو ال باشه) یا این که باید به فرم یک پارامتر این کار رو کنید، می تونید یک ADOQuery روی فرم بگذارید و در کوئری مربوطه پارامتر ست کنید و در دلفی از این پارامتر استفاده کنید.


ADOQuery1.Parameters.ParamByName('@YourParam').Loa dFromStream(aStream, ftBlob);

khoshblagh
دوشنبه 18 بهمن 1395, 17:31 عصر
با سلام خدمت استاد ارجمند
از Bulk به علت در مسیر اس کیو ال نبودن استفاده نمی کنم و در عوض از روش دوم از برنامه استفادم میکنم. ولی به عللی میخواهم از adoCommand به روشی که در پست 1 ارائه شد استفاده نمایم. آیا اینکار شدنی است؟ متشکرم

یوسف زالی
سه شنبه 19 بهمن 1395, 10:59 صبح
برای اینسرت مستقیم باید چیزی شبیه به این داشته باشید:



INSERT INTO Tbl
VALUES ( 0xFFD8FFE000104A46494600010101006000600000FFFE003C 43524541544F523A2067 )


یعنی دیتای خودتون رو به فرم هگز در بیارید، بعد اون رو به عنوان دیتای ورودی ذخیره کنید.
البته مشخصه که با این روش به ازای هر بایت، شما باید دو بایت برای نوشتن استریم در کوئری مصرف کنید.

hp1361
سه شنبه 19 بهمن 1395, 12:55 عصر
با سلام خدمت دوستان
من با کد زیر سعی در ثبت یک استرم در جدول مینمایم. ولی مشکل نوع رشته با نوع استرم دارد . در صورت امکان راهنمایی بفرمائید.متشکرم


BlobStream := TMemoryStream.Create;
BlobStream.Position := 0;
cmdUpdateData.CommandText:='INSERT INTO tblPerson('+
',SalMah,Aks)values('+
QuotedStr(strSalMah)+','+
(BlobStream)+')';
cmdUpdateData.CommandType :=cmdText;
cmdUpdateData.Execute ;




سلام

با استفاده از FireDAC به این شکل میتونید ذخیره کرده و دوباره بخونید:


procedure TForm1.btn_1Click(Sender: TObject);
var
StrStream: TStringStream;
begin
FDConnection1.Open();
try
StrStream := TStringStream.Create('weqweqweqweqweqwe');
with FDQry_1 do
begin
Close;
SQL.Clear;;
SQL.Add('INSERT INTO Table_2(Blb) Values(:Blb)');
Params.ParamByName('Blb').AsStream := StrStream;
Execute();
end;
finally
StrStream.Free;
end;
end;



procedure TForm1.btn_2Click(Sender: TObject);
begin
FDConnection1.Open();
with FDQry_1 do
begin
Close;
SQL.Clear;;
SQL.Add('SELECT * FROM Table_2');
Open();
ShowMessage(FieldByName('Blb').AsString);
end;
end;


موفق باشیم

یوسف زالی
سه شنبه 19 بهمن 1395, 13:41 عصر
البته امیدوارم مطالب بالا رو خونده باشید و پست داده باشید!