在 C# 中从 mysql/sql 客户端切换到 ODBC 客户端时出现“System.AccessViolationException”

问题描述 投票:0回答:2

我有 C# 代码,它从 xml 文件获取参数并执行传递到 xml 的 .sql 文件中的命令。

我有针对不同类型连接的案例陈述。

switch (type)
{
    case @"type=mysql":
        conn = new MySqlConnection(connection);
        break;

    case @"type=odbc":
        conn = new OdbcConnection(connection);
        break;

}

当我使用 mySql 或 sql 客户端运行时,它工作正常:

MySqlCommand queryCmd = new MySqlCommand(query, con);
queryCmd.ExecuteNonQuery();

但是当我切换到 odbc 客户端时

OdbcCommand queryCmd = new OdbcCommand(query, con);
queryCmd.ExecuteNonQuery();

我明白了

“抛出异常:读取访问冲突。stmt 为 nullptr。”和 “System.AccessViolationException:'尝试读取或写入 受保护的内存。这通常表明其他内存正在使用 腐败。’”

更新::我用 SQL Server 连接进行了测试,这确实执行正常。与 MariaDb 连接一起使用时会失败。此外,这在执行时失败,而不是在连接时失败。

c# .net mariadb odbc access-violation
2个回答
1
投票

最终对我有用的是:

  • 选中在数据源配置中启用多个语句的选项
  • 将“OPTIONS=92344352”添加到连接字符串

0
投票

我知道这是一篇旧帖子,但我发现了这个: 在 C# 中从 mysql/sql 客户端切换到 ODBC 客户端时出现“System.AccessViolationException”

使用 PowerShell,我添加了选项字符串,并选中了允许多个连接框。 Add-OdbcDsn -Name 'MariaDB12345' -DriverName 'MariaDB ODBC 3.1 驱动程序' -DsnType '系统' -SetPropertyValue ('服务器=12345', 'Trusted_Connection=YES', '数据库=12345','用户=12345','12345 ','选项=92344352') -PassThru

希望这有帮助

© www.soinside.com 2019 - 2024. All rights reserved.