我正在開發一個簡化日誌記錄的小應用程序,它通過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''外部組件拋出一個異常.'' –