はじめに
Delphi Advent Calendar 2022 12/05と12/07の記事のMicrosoft SQL Server 2019 Express版です。
1. Ubuntu20.04 はローカルの機器にインストール
2. Microsoft SQL Server 2019 Express に事前に test_1 データベースを作成
3. Microsoft SQL Server 2019 Expressでは、データ型は Image です
4. Delphiで、uses JPEG, GIFImg, PNGImage ; //使用する画像を宣言
以下サンプルコード
画像データの追加のサンプルコード
FD_MSSQL2019_B_Unit.pas
procedure TForm1.SpeedButton6Click(Sender: TObject);
var
SQLstmt:String;
begin
with FDConnection1 do
try
SQLstmt :=' INSERT INTO '
+' test_tbl ( ts_no , tsblob ) '
+' VALUES ('
+' :ts_no , :tsblob '
+ ')';
FDQuery1.SQL.Clear;
FDQuery1.SQL.Text:= sqlstmt;
FDQuery1.ParamByName('ts_no').AsInteger:=StrToInt( Edit_TS_NO.Text );
FDQuery1.ParamByName('tsblob').LoadFromFile( Edit_Files.Text ,ftBlob);
FDQuery1.ExecSQL();
ShowMessage('登録しました');
finally
FDQuery1.Close;
end;
end;
画像データの表示のサンプルコード
FD_MSSQL2019_B_Unit.pas
procedure TForm1.SpeedButton7Click(Sender: TObject);
var
SQLstmt:String;
begin
with FDConnection1 do
try
SQLstmt := 'SELECT * FROM test_tbl '
+ 'WHERE ts_no = :ts_no';
FDQuery1.SQL.Clear;
FDQuery1.SQL.Text:= sqlstmt;
FDQuery1.ParamByName('ts_no').AsInteger:=StrToInt(Edit_ts_no.Text);
FDQuery1.Open();
if not FDQuery1.Eof then
begin
Edit_ts_no.Text :=IntToStr(FDQuery1.FieldByName('ts_no').AsInteger);
Image1.Picture.Assign( TBLOBField(FDQuery1.FieldByName('tsblob') ) );
end;
finally
FDQuery1.Close;
end;
end;
テーブルの作成のサンプルコード
FD_MSSQL2019_B_Unit.pas
procedure TForm1.SpeedButton2Click(Sender: TObject);
var
sqlstmt:string;
begin
sqlstmt:='CREATE TABLE TEST_TBL '+
'('+
'TS_NO INTEGER not null,'+
'TS_NAME VARChar(30) ,'+
'TS_QTY DECIMAL(14,2) Default 0 ,'+
//'TS_BLOB BLOB ,'+
//'TS_BLOB Binary ,'+
//'TS_BLOB VarBinary ,'+
'TSBLOB Image ,'+
'TSBLOB1 VARBINARY(MAX) '+ //こちらも使用できるようです
'primary key(TS_NO)'+
')';
if FDConnection1.Connected=true then
begin
try
FDQuery1.SQL.Clear;
FDQuery1.SQL.Add(sqlstmt);
FDQuery1.ExecSQL();
ShowMessage('CREATE TABLE');
except
on E: EFDDBEngineException do
ShowMessage(E.ClassName+' error raised, with message : '+E.Message);
end;
end
else ShowMessage('Connected ERR');
end;
今回使用した、 sqlncli11.dll は 2014 のものですが、2019で、接続可能でした。
SQL Server 2022 Expressは、現時点で、手元にインストールできなかったので、2019でテストしました。
このソースのダウロードは、ここからできます