文档中心MogDBMogDB StackUqbar
v5.0

文档:v5.0

支持的版本:

其他版本:

.NET驱动使用

.NET 4.8驱动使用

驱动文件

使用驱动包中netstandard2.0中的OpenGauss.NET.dll

图 1 OpenGauss.NET.dll

OpenGauss.NET.dll

引入项目

创建dotnet 4.8项目,右键点击项目 → 添加 → 引用,浏览找到库文件。

图 2 引用OpenGauss.NET.dll

引用OpenGauss.NET.dll

添加成功后如图3所示:

图 3 资源管理器查看引用

资源管理器查看引用

配置修改

图 4 配置修改

配置修改

对应配置内容:

<system.data>
 <DbProviderFactories>
  <add name="OpenGauss Data Provider" invariant="OpenGauss.NET"  description=".NET Framework Data Provider for OpenGauss"  type="OpenGauss.NET.OpenGaussFactory, OpenGauss.NET, Culture=neutral" />
 </DbProviderFactories>
</system.data>

其他可能引用的库:


<runtime>
 <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
  <dependentAssembly>
   <assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
   <bindingRedirect oldVersion="0.0.0.0-4.0.1.1" newVersion="4.0.1.1" />
  </dependentAssembly>
  <dependentAssembly>
   <assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
   <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
  </dependentAssembly>
  <dependentAssembly>
   <assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
   <bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" />
  </dependentAssembly>
  <dependentAssembly>
   <assemblyIdentity name="System.Text.Json" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
   <bindingRedirect oldVersion="0.0.0.0-6.0.0.10" newVersion="6.0.0.10" />
  </dependentAssembly>
 </assemblyBinding>
</runtime>

在包管理中设置:

图 5 packages.config

packages.config

<?xml version="1.0" encoding="utf-8"?>
<packages>
 <package id="Microsoft.Bcl.AsyncInterfaces" version="6.0.0" targetFramework="net48" />
 <package id="System.Buffers" version="4.5.1" targetFramework="net48" />
 <package id="System.Diagnostics.DiagnosticSource" version="6.0.0" targetFramework="net48" />
 <package id="System.Memory" version="4.5.4" targetFramework="net48" />
 <package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net48" />
 <package id="System.Runtime.CompilerServices.Unsafe" version="6.0.0" targetFramework="net48" />
 <package id="System.Text.Encodings.Web" version="6.0.0" targetFramework="net48" />
 <package id="System.Text.Json" version="6.0.10" targetFramework="net48" />
 <package id="System.Threading.Channels" version="6.0.0" targetFramework="net48" />
 <package id="System.Threading.Tasks.Extensions" version="4.5.4" targetFramework="net48" />
 <package id="System.ValueTuple" version="4.5.0" targetFramework="net48" />
</packages>

代码引用

DbProviderFactory factory = DbProviderFactories.GetFactory("OpenGauss.NET");
DbConnection connection = factory.CreateConnection();
connection.ConnectionString = "Host=192.168.1.2;Database=postgres;Username=test;Password=test";
connection.Open();

代码举例

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Common;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using OpenGauss.NET;

namespace ConsoleApp1
{
  class Program
  {
   static void Main(string[] args)
    {
        DbProviderFactory factory = DbProviderFactories.GetFactory("OpenGauss.NET");
        Console.WriteLine($"factory: {factory.ToString()}");
        using (DbConnection connection = factory.CreateConnection())
        {
            // 设置连接字符串
            connection.ConnectionString = "Host=192.168.1.2;Database=postgres;Username=test;Password=test";
            try{
                // 打开连接
                connection.Open();
                Console.WriteLine("Connection opened successfully!");
                // 创建命令
                using (DbCommand command = factory.CreateCommand())
                {
                    command.Connection = connection;
                    command.CommandText = "SELECT * FROM t";
                    DbDataAdapter daData = factory.CreateDataAdapter();
                    daData.SelectCommand = command;
                    DataSet dataSet = new DataSet();
                    daData.Fill(dataSet, "t");
                    foreach (DataRow row in dataSet.Tables["t"].Rows)
                    {
                        Console.WriteLine($"{row["id"]} - {row["c"]}");
                    }
                }
            }
            catch (Exception ex){
                Console.WriteLine($"Error: {ex.Message} {ex.StackTrace}\n{ex.InnerException?.Message}");
            }
        }
    }
  }
}

.NET 6.0及以上版本驱动使用

驱动文件

使用驱动包中对应版本的OpenGauss.NET.dll (6以上版本使用net6.0版本)

图 6 OpenGauss.NET.dll-06

OpenGauss.NET.dll-06

引入项目

创建项目。

拷贝驱动文件到项目的lib目录下。

配置修改

图 7 packages.config.07

packages.config.07

<Project Sdk="Microsoft.NET.Sdk">
 <PropertyGroup>
  <OutputType>Exe</OutputType>
  <TargetFramework>net6.0</TargetFramework>
  <ImplicitUsings>enable</ImplicitUsings>
  <Nullable>enable</Nullable>
 </PropertyGroup>
<ItemGroup>
 <Reference Include="OpenGauss.NET">
  <HintPath>libs\OpenGauss.NET.dll</HintPath>
 </Reference>
</ItemGroup>
</Project>

代码引用

DbProviderFactory factory = DbProviderFactories.GetFactory("OpenGauss.NET");

代码例子(创建DbProviderFactory ,其他代码参考.NET 4.8驱动使用步骤)

using System;
using System.Data.Common;
using OpenGauss.NET;

namespace PostgresCRUDExample
{
    class Program
    {
        static void Main(string[] args)
        {
            DbProviderFactory factory = DbProviderFactories.GetFactory("OpenGauss.NET");
        }
    }
}
Copyright © 2011-2025 www.enmotech.com All rights reserved.