Z pewnością wielu potrzebuje rozwiązania, które będzie generować raporty dla systemów Linux, a także wspierać pracę z bazami danych typu SQL i nie tylko. My mamy takie rozwiązanie FastReport.Core. Biblioteka ta pozwala na tworzenie raportów pod różnymi dystrybucjami Linuksa i może łączyć się z różnymi bazami danych. W tym artykule przyjrzymy się, jak zaimplementować ją na dystrybucji Debian 10 z wykorzystaniem PostgreSQL.
W pierwszej kolejności należy zainstalować PostgreSQL na Debianie 10. Szczegółowy opis procesu instalacji znajdziesz pod poniższym linkiem. Przetestujmy wydajność Postgresa, przechodząc do terminala. Przełącz się na swoje konto Postgres za pomocą następującego polecenia:
$ sudo -i -u postgres
Po tym wpisujemy poniższe, aby uzyskać dostęp do warstwy postgres:
$ psql
Teraz mamy dostęp do linii poleceń postgres, a dodatkowo sprawdziliśmy, że to działa.
Dodaj hasło dla użytkownika postgres zamiast 'password123':
ALTER USER postgres WITH PASSWORD ‘password123’
Utwórzmy tabelę testową:
CREATE TABLE test (city varchar(80), temp_lo int, temp_hi int);
Wypełnij ją danymi:
INSERT INTO test VALUES ('Chicago',30,40);
Gotowe, teraz sprawdź tabelę pod kątem danych za pomocą poniższego polecenia. Wynik jest przedstawiony na poniższym rysunku.
SELECT * FROM test;
Aby stworzyć aplikację na .NET 5.0, musimy zainstalować sam DotNet. Przejdź do strony ze szczegółową instalacją i dokładnie przyjrzyj się wszystkim niezbędnym punktom. Dla wygodniejszej pracy możesz pobrać kod VS pod tym linkiem. Następnie pobierz pakiet deb i zainstaluj go na swoim komputerze.
Pobierz wtyczki C# i Nuget Gallery w kodzie VS. Ta ostatnia jest potrzebna do łatwego wyszukiwania i poprawnej instalacji pakietów nuget..
Tworzymy projekt w kodzie VS, w tym celu naciskamy ctrl + J, aby otworzyć konsolę wewnątrz kodu VS. Następnie wprowadź to polecenie:
dotnet new console
Po utworzeniu projektu musimy pobrać i zainstalować niezbędne biblioteki. Po wykonaniu poprzednich kroków należy otworzyć Galerię Nuget w projekcie testowym.
Znajdź FastReport.Core i zainstaluj go. Pamiętaj, aby zaznaczyć pole obok Prerelease, ponieważ ten pakiet jest wersją demonstracyjną, w przeciwnym razie pakiet nie zostanie wyświetlony.
Wspomniany wtyczka nie jest wersją demonstracyjną, więc nie trzeba zaznaczać pola Prerelease. Wystarczy w pasku wyszukiwania znaleźć FastReport.Data.Postgres i zainstalować ją w taki sam sposób jak poprzedni pakiet.
Po zainstalowaniu wszystkich niezbędnych komponentów otwieramy Program.cs w naszym projekcie i do metody main wklejamy następujący kod:
using System; using FastReport; using FastReport.Data; using FastReport.Utils; using FastReport.Export.Pdf; static void Main(string[] args) { //Creating a connection to PostgreSQL RegisteredObjects.AddConnection(typeof(PostgresDataConnection)); PostgresDataConnection connection = new PostgresDataConnection(); connection.ConnectionString = "Host=localhost;Username=postgres;Password=1234;Database=postgres"; connection.CreateAllTables(); //Creating a report and connecting the database and table to the report Report report = new Report(); report.Dictionary.Connections.Add(connection); connection.Enabled = true; foreach(TableDataSource table in connection.Tables) { if(table.Name == "public_test") { table.Enabled = true; } } ReportPage page = new ReportPage(); report.Pages.Add(page); page.CreateUniqueName(); DataBand dataBand = new DataBand(); page.Bands.Add(dataBand); dataBand.CreateUniqueName(); //Assigning DataBend to our table dataBand.DataSource = report.GetDataSource("public_test"); dataBand.Height = Units.Centimeters * 0.5f; TextObject City = new TextObject(); City.CreateUniqueName(); City.Bounds = new System.Drawing.RectangleF(0,0,100,100); City.Parent = dataBand; //Assigning values to a text object from a DB field City.Text = "[public_test.city]"; TextObject temp_lo = new TextObject(); temp_lo.CreateUniqueName(); temp_lo.Bounds = new System.Drawing.RectangleF(150,0,100,100); temp_lo.Parent = dataBand; temp_lo.Text = "[public_test.temp_lo]"; TextObject temp_hi = new TextObject(); temp_hi.CreateUniqueName(); temp_hi.Bounds = new System.Drawing.RectangleF(300,0,100,100); temp_hi.Parent = dataBand; temp_hi.Text = "[public_test.temp_hi]"; report.Prepare(); PDFExport pDF = new PDFExport(); pDF.Export(report,"test.pdf"); }
Po czym skompilujmy i uruchommy nasz projekt. Wygeneruje on następujący plik raportu PDF:
Podsumowanie będzie naprawdę proste. Podłączenie bazy danych do aplikacji nie jest trudne, właśnie dzisiaj stworzyliśmy raport wykorzystujący dane z bazy PostgreSQL w dystrybucji Debian 10.