我正在开发一个简化日志记录的小应用程序,它通过OleDB为MS Access数据库添加了一些输入。在OleDb连接打开时发生SEHException
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时,它将抛出SEHException
在conn.Open()
。我真的在摸索为什么会发生这种情况。
编辑
至于建议,我也试图单纯实现相同的代码在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();
}
}
}
你有没有尝试用你的WPF中的等效C#代码替换它?项目,看看错误是否仍然存在? – AlexFoxGill
例外情况如何? –
@FyodorSoikin''外部组件抛出一个异常.'' –