gpt4 book ai didi

c# - OleDb 连接打开时出现 SEHException

转载 作者:可可西里 更新时间:2023-11-01 08:10:01 25 4
gpt4 key购买 nike

我正在开发一个可以简化日志记录的小型应用程序,它通过 OleDB 将一些输入添加到 MS Access 数据库来实现。

let private conn = new OleDbConnection(connectionString)

let private submitCmd date wins =
let cmd = new OleDbCommand("INSERT INTO ArenaStats ([Date], [Wins]) VALUES (@Date, @Wins)",
Connection = conn, CommandType = CommandType.Text)
["@Date", box date; "@Wins", box wins]
|> List.iter (cmd.Parameters.AddWithValue >> ignore)
cmd


let private submit date wins =
try
conn.Open()
(submitCmd date wins).ExecuteNonQuery() |> ignore
finally
conn.Close()

[<CompiledName "AddEntry">]
let addEntry(date:DateTime, wins:int) =
submit date wins

现在通过 FSI 进行测试,效果如预期。但是,当我从 C# WPF 项目使用此 API 时,它将在 conn.Open() 处抛出 SEHException。我真的很想知道为什么会这样。

编辑

正如建议的那样,我也尝试过在同一个项目中完全用 C# 实现相同的代码,它会在同一个地方抛出相同的异常,但我在下面发布代码以供引用。

class MsAccessDatabase : IArenaWinsDatabase {
private OleDbConnection connection = new OleDbConnection(connectionString);

private OleDbCommand SubmitCommand(DateTime date, int wins) {
return new OleDbCommand("INSERT INTO ArenaStats ([Date], [Wins]) VALUES (@Date, @Wins)") {
Connection = connection,
CommandType = System.Data.CommandType.Text,
Parameters = {
new OleDbParameter("@Date", date),
new OleDbParameter("@Wins", wins)
}
};
}

public void Submit(DateTime date, int wins) {
try {
connection.Open();
SubmitCommand(date, wins).ExecuteNonQuery();
}
finally {
connection.Close();
}
}
}

最佳答案

在 Philip 的帮助下,我终于弄明白了。似乎默认情况下 FSI 配置为默认以 64 位运行,而 WPF 项目设置为“首选 32 位”。将 WPF 项目的目标平台更改为 64 位解决了该问题。

关于c# - OleDb 连接打开时出现 SEHException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30975809/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com