You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C#代码中识别Acumatica使用的是MySQL还是SQL Server

在Acumatica中通过C#判断数据库类型(MySQL/SQL Server)

要识别Acumatica当前使用的数据库类型,最可靠的方式是获取数据库提供程序名称,Acumatica的PXDatabase类直接暴露了这个核心信息。

核心实现方法

利用PXDatabase.ProviderName属性获取当前数据库的提供程序标识,再通过关键字匹配区分SQL Server和MySQL。

代码示例

using PX.Data;
using System;

public static class DatabaseTypeHelper
{
    public static string GetCurrentDatabaseType()
    {
        string providerName = PXDatabase.ProviderName;

        // 判断SQL Server(兼容新旧驱动版本)
        if (providerName.IndexOf("SqlClient", StringComparison.OrdinalIgnoreCase) >= 0)
        {
            return "SQL Server";
        }
        // 判断MySQL(兼容官方与开源驱动)
        else if (providerName.IndexOf("MySql", StringComparison.OrdinalIgnoreCase) >= 0)
        {
            return "MySQL";
        }
        else
        {
            return "Unknown Database Provider";
        }
    }
}

在Acumatica Graph中调用示例

public class MyCustomGraph : PXGraph<MyCustomGraph>
{
    public PXAction<MyDAC> CheckDatabaseType;
    [PXButton]
    [PXUIField(DisplayName = "Check Database Type")]
    protected void checkDatabaseType()
    {
        string dbType = DatabaseTypeHelper.GetCurrentDatabaseType();
        PXTrace.WriteInformation($"当前数据库类型:{dbType}");
        PXTrace.WriteInformation($"提供程序名称:{PXDatabase.ProviderName}");
    }
}

关键说明

  • PXDatabase.ProviderName返回的典型值:
    • SQL Server:System.Data.SqlClient(旧版.NET驱动)或Microsoft.Data.SqlClient(新版驱动)
    • MySQL:MySql.Data.MySqlClient(Oracle官方驱动)或MySqlConnector(开源驱动)
  • 该方法需在Acumatica有数据库上下文的环境中调用(如Graph逻辑、数据处理事件中),确保PXDatabase已完成初始化。

内容的提问来源于stack exchange,提问作者Hemendra Yadav

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 03:04:57