【发布时间】:2015-08-09 13:21:02
【问题描述】:
如何使用 OleDbConnection 将数组导出到 ms 访问表。以下是我到目前为止的代码。
let A=y|>Array.map (fun x->x.a)
let B=y|>Array.map (fun x->x.b)
let C=y|>Array.map (fun x->x.c)
let D=y|>Array.map (fun x->x.d)
let cnn = @"Provider=Microsoft.ACE.OLEDB.12.0;
Data Source=U:\test.accdb;
Persist Security Info=False;"
let conn = new OleDbConnection(cnn)
conn.Open()
use com = conn.CreateCommand()
com.CommandText <- "INSERT INTO Test values" {A,B,C,D}
com.ExecuteNonQuery() |> ignore
conn.Close()
【问题讨论】:
-
也许您应该包括您遇到的所有问题 - 另外:您知道如何插入单行吗?我会考虑在这里使用
Array.iter而不是多个maps(使用INSERTinsideiter) -
我必须使用
array.iter吗?是否可以使用单个insert插入整个数组?如果我执行迭代,代码运行速度会慢得多 -
还有其他有效的方法可以将数据插入到 ms access 中吗?
-
老实说,我不知道你是否可以在 MS-Access 中进行某种批量插入 - 但正如你肯定看到的那样,你所做的根本行不通 - 你必须映射你的东西到某种 sql 字符串(是的,我想我不得不提一下:由于 SQL 注入攻击,您可能不想这样做)或参数 - 但这不完全是 F# 问题 - 它实际上是一个 ODBC/ MS-Access 的东西
-
你是绝对正确的,它不工作。如果我采用
Array.iter方法并逐行存储数据,是否可以使用某种并行功能更快地迭代它。否则有ms访问的SqlDataproviders吗?
标签: f# f#-interactive f#-3.0 f#-data