---
title: "SqlSugar 连接 OceanBase 数据库示例程序 - OceanBase 数据库 V4.3.0 | OceanBase 文档中心"
description: SqlSugar 连接 OceanBase 数据库示例程序 本文将介绍如何使用 SqlSugar 框架、OceanBase Connector/ODBC 和 OceanBase 数据库构建一个应用程序，实现创建表、插入数据和查询数据等基本操作。 点击下载 sqlsugar-oceanbase-odbc 示例工程 Sq…
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*P8CuR4UJ_FkAAAAAAAAAAAAADiGDAQ/original) OceanBase 数据库分布式版 - V 4.3.0

# SqlSugar 连接 OceanBase 数据库示例程序

更新时间：2026-04-10 11:58:35

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.3.0/zh-CN/300.develop/200.application-development-of-oracle-mode/200.sample-program-of-oracle-mode/300.c-of-oracle-mode/300.sqlsugar-connection-to-oceanbase-database-sample-program.md)  

本文将介绍如何使用 SqlSugar 框架、OceanBase Connector/ODBC 和 OceanBase 数据库构建一个应用程序，实现创建表、插入数据和查询数据等基本操作。

 [![](https://file.oceanbase.com/doc/img/lQLPJyFovGIOcJQWFrAqhLlgRRsPvwU-H7hJ_i0A_22_22.png) 点击下载 sqlsugar-oceanbase-odbc 示例工程](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/observer-enterprise/V4.2.0/3.develop/demo/C%26C%2B%2B/sqlsugar-oceanbase-odbc.zip)  [![](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/ocp/422/Play%2002.png) SqlSugar 连接 OceanBase 数据库示例程序](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/video-center/video/video/08%20sqlsugar-oceanbase-odbc%2001.mp4)  

## 前提条件

- 您已安装 OceanBase 数据库并且创建 Oracle 模式的用户租户。安装 OceanBase 数据库的详细信息，请参见 [部署概述](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000639608)。
 - 您已安装 Visual Studio 以及 NuGet 包管理器插件和 .Net Framework 组件。
 - 您已安装 OceanBase Connector/ODBC 驱动程序。

  #### 说明

  请在 OceanBase 官方网站 [资源 > 下载中心 > 企业版](https://www.oceanbase.com/softwarecenter-enterprise) 页面下的 **驱动和中间件** 模块中下载 OceanBase ODBC 驱动程序 Windows 版本的安装包。Windows 版 OceanBase Connector/ODBC 驱动安装包为一键部署式，根据默认指导步骤安装即可。

## 操作步骤

#### 说明

本文中给出的操作步骤是在 Windows 环境下使用 Visual Studio Community 2019 编译和运行该项目的步骤。如果您使用的是其他操作系统环境或编译器，那么操作步骤可能会略有不同。

1. 打开 `sqlsugar-oceanbase-odbc` 项目。
 2. 安装 SqlSugar 相关的包。
 3. 配置数据源。
 4. 修改 `sqlsugar-oceanbase-odbc` 项目中的数据源。
 5. 构建项目。
 6. 运行应用程序。
 7. 查看输出结果。

### 步骤一：打开 sqlsugar-oceanbase-odbc 项目

1. 启动 Visual Studio Community 2019。
 2. 打开现有项目。

      1. 在 Visual Studio Community 2019 的起始界面上，在开始使用下面点击 **打开项目或解决方案(P)** 按钮。或者在 Visual Studio Community 2019 的起始界面上，在开始使用下面点击 **继续但无需代码(W)** 按钮；在上面菜单栏中选择 **文件** -> **打开** -> **项目/解决方案(P)**。

        ![1](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/observer-enterprise/V4.2.0/3.develop/demo/C%26C%2B%2B/vs-c-ob-capi/1%E6%89%93%E5%BC%80%E9%A1%B9%E7%9B%AE.png)
      2. 浏览到 **sqlsugar-oceanbase-odbc 项目** 的文件夹，选择项目文件（`sqlsugar-oceanbase-odbc.sln` 或者 `sqlsugar-oceanbase-odbc.csproj`），然后点击 **打开**。

        ![6](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/observer-enterprise/V4.2.0/3.develop/demo/C%26C%2B%2B/sqlsugar-ob-odbc/6%E6%89%93%E5%BC%80%E6%96%87%E4%BB%B6.png)

### 步骤二：安装 SqlSugar 相关的包

1. 在 Visual Studio Community 2019 的起始界面上，在上面菜单栏中选择 **工具** -> **NuGet 包管理器** -> **管理解决方案的 NuGet 程序包**。
 2. 在 **浏览** 下的搜索框里输入 `sqlsugar`，然后下载 SqlSugar 包。

   ![7](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/observer-enterprise/V4.2.0/3.develop/demo/C%26C%2B%2B/sqlsugar-ob-odbc/7%E4%B8%8B%E8%BD%BD1.png)
 3. 在 **浏览** 下的搜索框里输入 `sqlsugar.odbc`，然后下载 SqlSugar.Odbc 和 SqlSugar.OdbcCore 包。

   ![8](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/observer-enterprise/V4.2.0/3.develop/demo/C%26C%2B%2B/sqlsugar-ob-odbc/8%E4%B8%8B%E8%BD%BD2.png)
 4. 安装完成后，你可以在项目的代码文件中使用 SqlSugar 的相关命名空间和类型。

   ![9](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/observer-enterprise/V4.2.0/3.develop/demo/C%26C%2B%2B/sqlsugar-ob-odbc/9%E4%B8%8B%E8%BD%BD%E5%AE%8C%E6%88%90.png)

### 步骤三：配置数据源

1. 获取数据库的连接信息。

   联系 OceanBase 数据库部署人员或者管理员获取相应的数据库连接串。

   **示例如下：**

   ```shell
   obclient -hxxx.xxx.xxx.xxx -P2881 -usys@oracle001 -p******

   ```

   **参数说明：**

      - `-h`：提供 OceanBase 数据库连接 IP。ODP 连接方式使用的是一个 ODP 地址；直连方式使用的是 OBServer 节点的 IP 地址。
      - `-P`：提供 OceanBase 数据库连接端口。ODP 连接的方式默认是 `2883`，在部署 ODP 时可自定义；直连方式默认是 `2881`，在部署 OceanBase 数据库时可自定义。
      - `-u`：提供租户的连接账户。ODP 连接的常用格式有：`用户名@租户名#集群名` 或者 `集群名:租户名:用户名`；直连方式格式：`用户名@租户名`。
      - `-p`：提供账户密码。

   更多连接串的信息，请参见 [通过 OBClient 连接 OceanBase 租户](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000640027)。
 2. 检查 OceanBase Connector/ODBC 驱动是否安装成功。

   选择 **控制面板** > **系统和安全** > **管理工具** > **ODBC 数据源(64 位)** > **驱动程序**，OceanBase Connector/ODBC 驱动安装成功后在此显示出来。

   ![1](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/observer-enterprise/V4.2.0/3.develop/demo/C%26C%2B%2B/sqlsugar-ob-odbc/1%E9%A9%B1%E5%8A%A8%E7%A8%8B%E5%BA%8F.png)
 3. 创建新数据源。

   选择 **用户 DSN** > **添加** > **选择驱动程序**，然后点击 **完成**。

   ![2](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/observer-enterprise/V4.2.0/3.develop/demo/C%26C%2B%2B/sqlsugar-ob-odbc/2%E6%96%B0%E5%BB%BA%E6%95%B0%E6%8D%AE%E6%BA%90.png)
 4. 在弹出的窗口中填写数据源名称 **Name** 和描述 **Description**，然后点击 **Next**。

   ![3](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/observer-enterprise/V4.2.0/3.develop/demo/C%26C%2B%2B/sqlsugar-ob-odbc/3%E6%95%B0%E6%8D%AE%E6%BA%90%E5%90%8D%E7%A7%B0%E5%A4%87%E6%B3%A8.png)
 5. 在弹出的窗口中填写数据库连接信息，之后点击 **Next** 还可以设置初始化语句、TLS、游标和结果集等信息。

   ![4](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/observer-enterprise/V4.2.0/3.develop/demo/C%26C%2B%2B/sqlsugar-ob-odbc/4%E8%BF%9E%E6%8E%A5%E4%BF%A1%E6%81%AF.png)

   #### 说明

   填写完数据库连接信息，您可以先点击 **Test DSN** 查看数据源是否可以连接成功。
 6. 设置完成后点击 **Finish**，数据源添加成功，点击 **确定**。

   ![5](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/observer-enterprise/V4.2.0/3.develop/demo/C%26C%2B%2B/sqlsugar-ob-odbc/5%E6%95%B0%E6%8D%AE%E6%BA%90%E6%B7%BB%E5%8A%A0%E5%AE%8C%E6%88%90.png)

### 步骤四：修改 sqlsugar-oceanbase-odbc 项目中的数据源

根据 **步骤三：配置数据源** 中创建的数据源修改 `Program.cs` 文件中的数据源。

**示例如下：**

将 `your_dsn` 替换为在 **步骤三：配置数据源** 中创建的数据源 `test_oboracle`。

```c
public static string ConnectionString = "DSN=test_oboracle";

```

![10](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/observer-enterprise/V4.2.0/3.develop/demo/C%26C%2B%2B/sqlsugar-ob-odbc/10%E4%BF%AE%E6%94%B9%E6%95%B0%E6%8D%AE%E6%BA%90.png)

### 步骤五：构建项目

选择 **生成** 菜单，然后选择 **生成解决方案**。构建过程中会显示编译器的输出和任何错误或警告信息。

![7](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/observer-enterprise/V4.2.0/3.develop/demo/C%26C%2B%2B/vs-c-ob-capi/7%E7%94%9F%E6%88%90%E6%88%90%E5%8A%9F.png)

### 步骤六：运行应用程序

选择 **调试** 菜单，然后选择 **开始调试** 或者 **开始执行(不调试)** 来运行的应用程序。

### 步骤七：查看输出结果

输出结果将显示在调试控制台中。您可以根据程序的设计逻辑和代码来判断如何处理输出。

![11](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/observer-enterprise/V4.2.0/3.develop/demo/C%26C%2B%2B/sqlsugar-ob-odbc/11%E8%BF%90%E8%A1%8C%E7%BB%93%E6%9E%9C.png)

## 项目代码介绍

点击 [sqlsugar-oceanbase-odbc](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/observer-enterprise/V4.2.0/3.develop/demo/C%26C%2B%2B/sqlsugar-oceanbase-odbc.zip) 下载项目代码，是一个名称为 `sqlsugar-oceanbase-odbc.zip` 的压缩包。

解压后，得到一个名为 `sqlsugar-oceanbase-odbc` 的文件夹。目录结构如下所示：

```shell
sqlsugar-oceanbase-odbc
├─ Program.cs
├─ sqlsugar-oceanbase-odbc.csproj
└─ sqlsugar-oceanbase-odbc.sln

```

**文件说明：**

- `Program.cs`：这是项目的主程序文件，包含了项目的入口点和定义数据表的结构和实现数据表操作的源代码文件。
 - `sqlsugar-oceanbase-odbc.csproj`：Visual Studio 的项目主工程文件，用于定义项目的配置、依赖项和构建信息。
 - `sqlsugar-oceanbase-odbc.sln`：Visual Studio 的解决方案文件，包含了该项目及其相关项目的信息，用于统一管理和构建多个项目。

### Program.cs 文件代码介绍

`Program.cs` 代码展示了如何使用 SqlSugar 操作 OceanBase 数据库，并实现了创建表、插入数据、查询数据等基本操作。同时，通过 `AopEvents` 对象来设置日志记录等事件回调函数，方便调试和排错。

本文 `Program.cs` 文件的代码主要包括以下几个部分：

1. 命名空间引用。

   使用 `using` 关键字引用命名空间 `System`、`SqlSugar`、`System.Linq`、`System.Data` 和 `System.Data.Odbc`，用于引用相关的数据访问类和操作数据库的类和方法。

   **代码如下：**

   ```c
   using System;
   using SqlSugar;
   using System.Linq;
   using System.Data;
   using System.Data.Odbc;

   ```
 2. 定义命名空间，用于放置相关的类和方法。

   定义名为 `GbaseTest` 的命名空间，在该命名空间中，定义了 `Program` 和 `TestEntity` 两个类。

   **代码如下：**

   ```c
   namespace GbaseTest
   {
       internal class Program
       {
           ...
           ...
       }

       public class TestEntity
       {
           ...
           ...
       }
   }

   ```
 3. 定义名为 `Program` 的类，包含了程序的主要逻辑。

   定义名为 `Program` 的类，包含了程序的主要逻辑。具体步骤如下：

      1. 定义了一个公共的静态字符串类型的变量 `ConnectionString`，用于存储数据库连接字符串，该变量可以在当前程序集的任何地方访问。其中，`DSN=your_dsn` 表示使用 ODBC 连接方式，使用名为 `your_dsn` 的数据源。

        #### 注意

        在运行程序时，请将 `your_dsn` 替换为您在 **步骤三** 中创建的数据源名称。
      2. Main 方法：作为程序的入口点，包含了程序的主要逻辑。

             1. `try-catch` 块：
                      1. 使用 `try` 关键字包裹一段可能引发异常的代码，`using` 语句和数据库操作。
                      2. 使用 `catch` 关键字捕获异常并进行处理。
             2. 最后，在程序结束前输出 `Program End.`。

   **代码如下：**

   ```c
       internal class Program
       {
           public static string ConnectionString = "DSN=your_dsn";

           static void Main(string[] args)
           {
               try
               {
                   using (...)
                   {
                       //数据库操作
                   }
               }
               catch (Exception ex)
               {
                   ...
                   ...
               }

               Console.WriteLine("Program End.");
           }
       }

   ```
 4. `using` 语句。

   使用 `ConnectionConfig` 配置了数据库连接信息和其他选项，包括数据库类型为 ODBC、连接字符串为 `ConnectionString`、主键类型为 `Attribute`、自动关闭连接、设置日志执行事件回调函数。通过 `SqlSugarClient` 对象可以方便地执行数据库操作，包括创建表、插入数据、查询数据等。通过使用 `using` 语句，可以自动释放相关资源，包括关闭数据库连接。具体步骤如下：

      1. 创建了一个 `SqlSugarClient` 对象，并将其赋值给名为 `db` 的变量。
      2. 创建一个连接配置实例，并使用对象初始化器初始化了 `DbType`、`ConnectionString`、`InitKeyType`、`IsAutoCloseConnection` 和 `AopEvents` 等属性。

             1. 设置了数据库类型为 ODBC。
             2. 设置了连接字符串为 `ConnectionString`。
             3. 设置了主键类型为 `Attribute`。
             4. 设置了自动关闭连接。
             5. 设置了 `AopEvents` 的日志执行事件回调函数。设置了日志执行事件回调函数的实现逻辑，其中 `sql` 表示执行的 SQL 语句，`p` 表示 SQL 语句中的参数列表。在实现逻辑中，将 SQL 语句和参数列表输出到控制台。

   **代码如下：**

   ```c
                   using (SqlSugarClient db = new SqlSugarClient(new ConnectionConfig()
                   {
                       DbType = SqlSugar.DbType.Odbc,
                       ConnectionString = ConnectionString,
                       InitKeyType = InitKeyType.Attribute,
                       IsAutoCloseConnection = true,
                       AopEvents = new AopEvents
                       {
                           OnLogExecuting = (sql, p) =>
                           {
                               Console.WriteLine(sql);
                               Console.WriteLine(string.Join(",", p?.Select(it => it.ParameterName + ":" + it.Value)));
                           }
                       }
                   }))

   ```
 5. 数据库操作。

   使用 `SqlSugarClient.Ado.ExecuteCommand` 方法执行 SQL 语句创建表和插入数据，使用 `SqlSugarClient.Ado.SqlQuery` 方法查询数据，并将查询结果遍历输出。通过 `SqlSugarClient` 对象可以方便地执行数据库操作，包括创建表、插入数据、查询数据等。具体步骤如下：

      1. 输出提示信息表示开始创建表。
      2. 执行 SQL 语句创建名为 `test_tbl1` 的表，其中包含两列，分别为 `id` 和 `name`。
      3. 输出提示信息表示开始插入数据。
      4. 定义变量 `tableName` 并赋值为 `test_tbl1`，该变量用于存储表名。
      5. 执行 SQL 语句插入数据到名为 `test_tbl1` 的表中，包含三条记录，分别为 `id` 为 `1`、`2`、`3`，`name` 分别为 `John`、`Jack`、`Amy`。
      6. 输出提示信息表示开始查询数据。
      7. 执行 SQL 语句查询名为 `test_tbl1` 的表中的所有数据，并将查询结果赋值给变量 `data`，`TestEntity` 为查询结果的实体类型。
      8. 输出提示信息表示开始遍历查询结果。
      9. 遍历查询结果，并将每一条记录赋值给变量 `item`。输出每一条记录的 `id` 和 `name` 字段。

   **代码如下：**

   ```c
                   {
                       Console.WriteLine("Create Table:");
                       db.Ado.ExecuteCommand("CREATE TABLE test_tbl1(id NUMBER PRIMARY KEY, name VARCHAR2(50))");

                       Console.WriteLine("Insert Data:");
                       string tableName = "test_tbl1";
                       int intValue = db.Ado.ExecuteCommand($"INSERT INTO {tableName} (id, name) VALUES (1, 'John'), (2, 'Jack'), (3, 'Amy')");

                       Console.WriteLine("Query Data");
                       var data = db.Ado.SqlQuery<TestEntity>($"SELECT * FROM {tableName}");
                       Console.WriteLine("Query Results:");
                       foreach (var item in data)
                       {
                           Console.WriteLine($"id: {item.id}, name: {item.name}");
                       }
                   }

   ```
 6. 使用 `catch` 关键字捕获异常并进行处理。

   当程序发生异常时，会输出异常的相关信息。通过捕获异常并输出信息，可以帮助调试和定位问题，对程序的健壮性和可靠性有一定的保障。具体步骤如下：

      1. 使用 `catch` 关键字捕获异常，并将捕获到的异常对象赋值给变量 `ex`，该异常对象是 `Exception` 类型或其子类的实例。
      2. 输出提示信息表示程序发生异常。
      3. 将捕获到的异常对象转换为字符串并输出，该字符串包含了异常的类型、消息、堆栈跟踪等信息。

   **代码如下：**

   ```c
               catch (Exception ex)
               {
                   Console.WriteLine("Program Exception:");
                   Console.WriteLine(ex.ToString());
               }

   ```
 7. 定义类 `TestEntity`。

   定义一个名为 `TestEntity` 的类，该类具有两个属性 `id` 和 `name`，分别表示实体对象的 `id` 和 `name` 字段。具体步骤如下：

      1. 定义了一个名为 `TestEntity` 的公共类。
      2. 定义了一个公共的整型属性 `id`，用于表示实体对象的 `id` 字段。通过属性的 `get` 和 `set` 方法可以对该字段进行读取和设置操作。
      3. 定义了一个公共的字符串类型属性 `name`，用于表示实体对象的 `name` 字段。通过属性的 `get` 和 `set` 方法可以对该字段进行读取和设置操作。

   **代码如下：**

   ```c
       public class TestEntity
       {
           public int id { get; set; }
           public string name { get; set; }
       }

   ```

### 完整的代码展示

    Program.cs

namespace GbaseTest
{
    internal class Program
    {
        public static string ConnectionString = "DSN=your_dsn";

        static void Main(string[] args)
        {
            try
            {
                using (SqlSugarClient db = new SqlSugarClient(new ConnectionConfig()
                {
                    DbType = SqlSugar.DbType.Odbc,
                    ConnectionString = ConnectionString,
                    InitKeyType = InitKeyType.Attribute,
                    IsAutoCloseConnection = true,
                    AopEvents = new AopEvents
                    {
                        OnLogExecuting = (sql, p) =>
                        {
                            Console.WriteLine(sql);
                            Console.WriteLine(string.Join(",", p?.Select(it => it.ParameterName + ":" + it.Value)));
                        }
                    }
                }))
                {
                    Console.WriteLine("Create Table:");
                    db.Ado.ExecuteCommand("CREATE TABLE test_tbl1(id NUMBER PRIMARY KEY, name VARCHAR2(50))");

                    Console.WriteLine("Query Data");
                    var data = db.Ado.SqlQuery<TestEntity>($"SELECT * FROM {tableName}");
                    Console.WriteLine("Query Results:");
                    foreach (var item in data)
                    {
                        Console.WriteLine($"id: {item.id}, name: {item.name}");
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("Program Exception:");
                Console.WriteLine(ex.ToString());
            }

    public class TestEntity
    {
        public int id { get; set; }
        public string name { get; set; }
    }
}

```

## 相关文档

- 更多连接 OceanBase 数据库的信息，请参见 [连接方式概述](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000640028)。
 - 更多 OceanBase Connector/ODBC 的信息，请参见 [OceanBase Connector/ODBC](https://www.oceanbase.com/docs/oceanbase-connector-odbc-cn)。

 上一篇 下一篇 ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
