---
title: "Integrating ClickHouse with C# / .NET"
description: "Official C#/.NET client for ClickHouse. One NuGet package (ClickHouse.Driver): a stable HTTP client (ClickHouseClient + ADO.NET for Dapper, EF Core, linq2db) and an experimental native-protocol client, with raw access to any server format."
category: "LANGUAGE_CLIENT"
support: "CORE"
docs: "https://clickhouse.com/docs/integrations/csharp"
---

# C# / .NET

### Installation

```
dotnet add package ClickHouse.Driver
```
### Examples
#### Basic query
```csharp
using System;
using System.Threading.Tasks;
using ClickHouse.Driver.ADO;
using ClickHouse.Driver.Utility;
namespace Clickhouse.Test;
class Program
{
    static async Task Main(string[] args)
    {
        using var connection = new ClickHouseConnection("Host=<host>;Protocol=https;Port=8443;Username=default;Password=<password>")
        // ExecuteScalarAsync is an async extension which creates command and executes it
        var version = await connection.ExecuteScalarAsync("SELECT version()");
        Console.WriteLine(version);
    }
}
```

#### Bulk insert
```csharp
using ClickHouse.Driver.ADO;
using ClickHouse.Driver.Copy;

using (var connection = new ClickHouseConnection(connectionString))
{
    connection.Open();

    using var bulkInsert = new ClickHouseBulkCopy(connection)
    {
        DestinationTableName = "default.my_table",
        MaxDegreeOfParallelism = 2,
        BatchSize = 100
    };
    
    var values = Enumerable.Range(0, 100).Select(i => new object[] { (long)i, "value" + i.ToString() });
    await bulkInsert.WriteToServerAsync(values);
    Console.WriteLine($"Rows written: {bulkInsert.RowsWritten}");
}
```