我有 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# 中从 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
希望这有帮助