Я разрабатываю небольшое приложение, которое упростит ведение журнала, и делает это, добавляя некоторые входы в базу данных MS Access через OleDB.SEHException on OleDb connection open
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 работает так, как ожидалось. Однако, когда я использую этот API из проекта C# WPF, он выкинет 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();
}
}
}
Вы пытались заменить его эквивалентным кодом C# в вашем WPF p roject и увидеть, если ошибка все еще происходит? – AlexFoxGill
Что такое исключение? –
@FyodorSoikin '' Внешний компонент выбрал исключение .'' –