Ove*_*ive 13 c# oledb ms-access f#
我正在开发一个简化日志记录的小应用程序,它通过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
Run Code Online (Sandbox Code Playgroud)
现在通过FSI进行测试就像预期的那样.但是,当我从C#WPF项目中使用此API时,它会抛出一个SEHException
at 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();
}
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1607 次 |
最近记录: |