From 9119aa490dff3ed347f393a8dab0e262cbe84880 Mon Sep 17 00:00:00 2001 From: Andreas Motl Date: Wed, 15 Oct 2025 22:34:27 +0200 Subject: [PATCH 1/2] Connect: Add C#, F#, Visual Basic --- docs/_assets/icon/csharp-logo.svg | 10 +++ docs/_assets/icon/fsharp-logo.svg | 59 ++++++++++++++ docs/_assets/icon/visualbasic-logo.svg | 1 + docs/_include/links.md | 2 + docs/connect/csharp/index.md | 104 +++++++++++++++++++++++++ docs/connect/fsharp/index.md | 104 +++++++++++++++++++++++++ docs/connect/index.md | 45 +++++++++++ docs/connect/visualbasic/index.md | 97 +++++++++++++++++++++++ 8 files changed, 422 insertions(+) create mode 100644 docs/_assets/icon/csharp-logo.svg create mode 100644 docs/_assets/icon/fsharp-logo.svg create mode 100644 docs/_assets/icon/visualbasic-logo.svg create mode 100644 docs/connect/csharp/index.md create mode 100644 docs/connect/fsharp/index.md create mode 100644 docs/connect/visualbasic/index.md diff --git a/docs/_assets/icon/csharp-logo.svg b/docs/_assets/icon/csharp-logo.svg new file mode 100644 index 00000000..c023aa9b --- /dev/null +++ b/docs/_assets/icon/csharp-logo.svg @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/docs/_assets/icon/fsharp-logo.svg b/docs/_assets/icon/fsharp-logo.svg new file mode 100644 index 00000000..8136f302 --- /dev/null +++ b/docs/_assets/icon/fsharp-logo.svg @@ -0,0 +1,59 @@ + + + + + + + + + + + + diff --git a/docs/_assets/icon/visualbasic-logo.svg b/docs/_assets/icon/visualbasic-logo.svg new file mode 100644 index 00000000..81e3d1d9 --- /dev/null +++ b/docs/_assets/icon/visualbasic-logo.svg @@ -0,0 +1 @@ +logo_vb \ No newline at end of file diff --git a/docs/_include/links.md b/docs/_include/links.md index 5c2eafeb..e0b77e65 100644 --- a/docs/_include/links.md +++ b/docs/_include/links.md @@ -3,6 +3,7 @@ [ADBC]: https://arrow.apache.org/docs/format/ADBC.html [Admin UI]: inv:crate-admin-ui:*:label#index +[ADO.NET Overview]: https://learn.microsoft.com/en-us/dotnet/framework/data/adonet/ado-net-overview [Amazon DynamoDB Streams]: https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Streams.html [Amazon Kinesis Data Streams]: https://docs.aws.amazon.com/streams/latest/dev/introduction.html [Apache Airflow]: https://airflow.apache.org/ @@ -13,6 +14,7 @@ [BM25]: https://en.wikipedia.org/wiki/Okapi_BM25 [cloud-datashader-colab]: https://colab.research.google.com/github/crate/cratedb-examples/blob/amo/cloud-datashader/topic/timeseries/explore/cloud-datashader.ipynb [cloud-datashader-github]: https://github.com/crate/cratedb-examples/blob/amo/cloud-datashader/topic/timeseries/explore/cloud-datashader.ipynb +[Connection Strings in ADO.NET]: https://learn.microsoft.com/en-us/dotnet/framework/data/adonet/connection-strings [CTE]: inv:crate-reference#sql_dql_with [CrateDB BLOB support]: inv:crate-reference:*:label#blob_support [CrateDB Cloud]: inv:cloud:*:label#index diff --git a/docs/connect/csharp/index.md b/docs/connect/csharp/index.md new file mode 100644 index 00000000..9dfcc7ae --- /dev/null +++ b/docs/connect/csharp/index.md @@ -0,0 +1,104 @@ +:::{include} /_include/links.md +::: + +(connect-csharp)= +# C# + +:::{div} sd-text-muted +Connect to CrateDB from C# .NET applications. +::: + +:::{rubric} About +::: + +[Npgsql] is an open source ADO\.NET Data Provider for PostgreSQL, for programs +written in C#, F#, or Visual Basic. + +:::{rubric} Synopsis +::: + +`example.csproj` +```xml + + + + Exe + net$(NETCoreAppMaximumVersion) + false + + + + + + + +``` +`example.cs` +```c# +using Npgsql; +using System; + +// Connect to database. +var connString = "Host=localhost;Port=5432;Username=crate;Password=crate;Database=doc;Sslmode=disable"; +var dataSourceBuilder = new NpgsqlDataSourceBuilder(connString); +var dataSource = dataSourceBuilder.Build(); +var conn = dataSource.OpenConnection(); + +// Invoke basic query. +var cmd = new NpgsqlCommand("SELECT mountain, height FROM sys.summits ORDER BY height DESC LIMIT 3", conn); + +// Display results. +var reader = cmd.ExecuteReader(); +while (reader.Read()) + Console.WriteLine($"{reader.GetString(0)}: {reader.GetInt32(1)}"); +``` + +:::{include} ../_cratedb.md +::: +```shell +export DOTNET_CLI_TELEMETRY_OPTOUT=true +dotnet run +``` + +:::{rubric} CrateDB Cloud +::: + +For connecting to CrateDB Cloud, use `Sslmode=require`, and +replace hostname, username, and password with values matching +your environment. +```c# +var connString = "Host=testcluster.cratedb.net;Port=5432;Username=admin;Password=password;Database=doc;Sslmode=require"; +``` + +## Examples + +:::{card} +:link: https://github.com/crate/cratedb-examples/tree/main/by-language/csharp-npgsql +:link-type: url +{material-outlined}`play_arrow;2em` +Connect to CrateDB and CrateDB Cloud using .NET (C#) ++++ +Demonstrates a basic example using Npgsql with CrateDB. +::: + +:::{card} +:link: https://github.com/crate/cratedb-examples/tree/main/by-language/csharp-efcore +:link-type: url +{material-outlined}`play_arrow;2em` +Connect to CrateDB and CrateDB Cloud using the Npgsql Entity Framework ++++ +Demonstrates the Npgsql Entity Framework Core provider for PostgreSQL with CrateDB. +::: + +[![C# Npgsql](https://github.com/crate/cratedb-examples/actions/workflows/lang-csharp-npgsql.yml/badge.svg)](https://github.com/crate/cratedb-examples/actions/workflows/lang-csharp-npgsql.yml) +[![C# EF Core](https://github.com/crate/cratedb-examples/actions/workflows/lang-csharp-efcore.yml/badge.svg)](https://github.com/crate/cratedb-examples/actions/workflows/lang-csharp-efcore.yml) + +## See also + +:::{div} +- [Connection Strings in ADO.NET] +- [ADO.NET Overview] +::: + + +[Npgsql]: https://www.npgsql.org/ diff --git a/docs/connect/fsharp/index.md b/docs/connect/fsharp/index.md new file mode 100644 index 00000000..c7ff2b87 --- /dev/null +++ b/docs/connect/fsharp/index.md @@ -0,0 +1,104 @@ +:::{include} /_include/links.md +::: + +(connect-fsharp)= +# F# + +:::{div} sd-text-muted +Connect to CrateDB from F# .NET applications. +::: + +:::{rubric} About +::: + +[Npgsql] is an open source ADO\.NET Data Provider for PostgreSQL, for programs +written in C#, F#, or Visual Basic. +[Npgsql.FSharp] is a thin F#-friendly layer around it. + +:::{rubric} Synopsis +::: + +`example.fsproj` +```xml + + + + Exe + net$(NETCoreAppMaximumVersion) + false + + + + + + + + + + + + +``` +`example.fs` +```f# +open Npgsql.FSharp +open System + +let connString = "postgres://crate:crate@localhost:5432/doc?sslmode=disable"; + +type Record = { + mountain: string + height: int +} + +[] +let main args = + let results = ResizeArray() + + // Connect to database. + connString + |> Sql.connect + + // Invoke basic query. + |> Sql.query "SELECT mountain, height FROM sys.summits ORDER BY height DESC LIMIT 3" + |> Sql.execute (fun read -> + { + mountain = read.text "mountain" + height = read.int "height" + }) + |> results.Add + + // Display results. + printfn "%A" results + + // Exit program successfully. + 0 +``` + +:::{include} ../_cratedb.md +::: +```shell +export DOTNET_CLI_TELEMETRY_OPTOUT=true +dotnet run +``` + +:::{rubric} CrateDB Cloud +::: + +For connecting to CrateDB Cloud, use `Sslmode=require`, and +replace hostname, username, and password with values matching +your environment. +```f# +let connString = "postgres://admin:password@testcluster.cratedb.net:5432/doc?sslmode=require"; +``` + +## See also + +:::{div} +- [Connection Strings in ADO.NET] +- [ADO.NET Overview] +::: + + +[Npgsql]: https://www.npgsql.org/ +[Npgsql.FSharp]: https://github.com/Zaid-Ajaj/Npgsql.FSharp diff --git a/docs/connect/index.md b/docs/connect/index.md index 3912e98a..26dcebd1 100644 --- a/docs/connect/index.md +++ b/docs/connect/index.md @@ -49,6 +49,34 @@ CrateDB drivers and adapters for supported programming languages, frameworks, an :gutter: 3 :padding: 0 +::::{grid-item-card} C# +:link: connect-csharp +:link-type: ref +:link-alt: Connect to CrateDB using C# +:padding: 3 +:text-align: center +:class-card: sd-pt-3 +:class-body: sd-fs-1 +:class-title: sd-fs-6 +```{image} /_assets/icon/csharp-logo.svg +:height: 50px +``` +:::: + +::::{grid-item-card} F# +:link: connect-fsharp +:link-type: ref +:link-alt: Connect to CrateDB using F# +:padding: 3 +:text-align: center +:class-card: sd-pt-3 +:class-body: sd-fs-1 +:class-title: sd-fs-6 +```{image} /_assets/icon/fsharp-logo.svg +:height: 50px +``` +:::: + ::::{grid-item-card} Java :link: connect-java :link-type: ref @@ -108,6 +136,20 @@ CrateDB drivers and adapters for supported programming languages, frameworks, an :::: +::::{grid-item-card} Visual Basic +:link: connect-visualbasic +:link-type: ref +:link-alt: Connect to CrateDB using Visual Basic +:padding: 3 +:text-align: center +:class-card: sd-pt-3 +:class-body: sd-fs-1 +:class-title: sd-fs-6 +```{image} /_assets/icon/visualbasic-logo.svg +:height: 50px +``` +:::: + ::::: @@ -176,11 +218,14 @@ application :maxdepth: 1 :hidden: +csharp/index +fsharp/index java javascript php python ruby +visualbasic/index natural All drivers ``` diff --git a/docs/connect/visualbasic/index.md b/docs/connect/visualbasic/index.md new file mode 100644 index 00000000..d6ea26cc --- /dev/null +++ b/docs/connect/visualbasic/index.md @@ -0,0 +1,97 @@ +:::{include} /_include/links.md +::: + +(connect-visualbasic)= +# Visual Basic + +:::{div} sd-text-muted +Connect to CrateDB from Visual Basic .NET applications. +::: + +:::{rubric} About +::: + +[Npgsql] is an open source ADO\.NET Data Provider for PostgreSQL, for programs +written in C#, F#, or Visual Basic. + +:::{rubric} Synopsis +::: + +`example.vbproj` +```xml + + + + Exe + net$(NETCoreAppMaximumVersion) + false + + + + + + + +``` +`example.vb` +```visualbasic +Imports Npgsql +Imports System + +Module Example + + Public Sub Main(args As String()) + Dim cs As String + Dim cn As NpgsqlConnection + Dim dr As NpgsqlDataReader + + 'Connect to database. + cs = "Host=localhost;Port=5432;Username=crate;Password=crate;Database=doc;Sslmode=disable" + cn = New NpgsqlConnection(cs) + cn.Open() + + 'Invoke basic query. + Dim sSQL = "SELECT mountain, height FROM sys.summits ORDER BY height DESC LIMIT 3" + Dim cmd As New NpgsqlCommand(sSQL, cn) + + 'Display results. + dr = cmd.ExecuteReader() + Do While dr.Read() + Console.WriteLine(dr.GetString(0) & ": " & dr.GetInt32(1)) + Loop + + 'Clean up. + dr.Close() + cn.Close() + End Sub + +End Module +``` + +:::{include} ../_cratedb.md +::: +```shell +export DOTNET_CLI_TELEMETRY_OPTOUT=true +dotnet run +``` + +:::{rubric} CrateDB Cloud +::: + +For connecting to CrateDB Cloud, use `Sslmode=require`, and +replace hostname, username, and password with values matching +your environment. +```visualbasic +cs = "Host=testcluster.cratedb.net;Port=5432;Username=admin;Password=password;Database=doc;Sslmode=require" +``` + +## See also + +:::{div} +- [Connection Strings in ADO.NET] +- [ADO.NET Overview] +::: + + +[Npgsql]: https://www.npgsql.org/ +[Npgsql.FSharp]: https://github.com/Zaid-Ajaj/Npgsql.FSharp From 474ec06ec186ad1fb8bb9745747d60eca1cec540 Mon Sep 17 00:00:00 2001 From: Andreas Motl Date: Sun, 26 Oct 2025 20:56:03 +0100 Subject: [PATCH 2/2] Connect/C#: Copyediting --- docs/connect/csharp/index.md | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/docs/connect/csharp/index.md b/docs/connect/csharp/index.md index 9dfcc7ae..3328d7e5 100644 --- a/docs/connect/csharp/index.md +++ b/docs/connect/csharp/index.md @@ -4,6 +4,13 @@ (connect-csharp)= # C# +:::{div} .float-right .text-right +[![C# Npgsql](https://github.com/crate/cratedb-examples/actions/workflows/lang-csharp-npgsql.yml/badge.svg)](https://github.com/crate/cratedb-examples/actions/workflows/lang-csharp-npgsql.yml) +[![C# EF Core](https://github.com/crate/cratedb-examples/actions/workflows/lang-csharp-efcore.yml/badge.svg)](https://github.com/crate/cratedb-examples/actions/workflows/lang-csharp-efcore.yml) +::: +:::{div} .clearfix +::: + :::{div} sd-text-muted Connect to CrateDB from C# .NET applications. ::: @@ -75,7 +82,7 @@ var connString = "Host=testcluster.cratedb.net;Port=5432;Username=admin;Password :::{card} :link: https://github.com/crate/cratedb-examples/tree/main/by-language/csharp-npgsql :link-type: url -{material-outlined}`play_arrow;2em` +{material-regular}`play_arrow;2em` Connect to CrateDB and CrateDB Cloud using .NET (C#) +++ Demonstrates a basic example using Npgsql with CrateDB. @@ -84,15 +91,12 @@ Demonstrates a basic example using Npgsql with CrateDB. :::{card} :link: https://github.com/crate/cratedb-examples/tree/main/by-language/csharp-efcore :link-type: url -{material-outlined}`play_arrow;2em` +{material-regular}`play_arrow;2em` Connect to CrateDB and CrateDB Cloud using the Npgsql Entity Framework +++ Demonstrates the Npgsql Entity Framework Core provider for PostgreSQL with CrateDB. ::: -[![C# Npgsql](https://github.com/crate/cratedb-examples/actions/workflows/lang-csharp-npgsql.yml/badge.svg)](https://github.com/crate/cratedb-examples/actions/workflows/lang-csharp-npgsql.yml) -[![C# EF Core](https://github.com/crate/cratedb-examples/actions/workflows/lang-csharp-efcore.yml/badge.svg)](https://github.com/crate/cratedb-examples/actions/workflows/lang-csharp-efcore.yml) - ## See also :::{div}