我想从F#查询更新MySQL表。 基本上我现在能够将MySql表导入F#矩阵。 我正在通过F#对这个矩阵进行一些计算,并且在计算之后我想用获得的新值更新主MySQL表。 例如,让我们从MySQL表中获取一个简单的矩阵:
let m = matrix [[1.;2.;3.];[1.;1.;3.];[3.;3.;3.]]
现在我想设计一个更新mySQL表的查询。
let query() =
seq { use conn = new SqlConnection(connString)
do conn.Open()
use comm = new SqlCommand("UPDATE MyTAble SET ID = "the first column of the matrix",
conn)
}
我需要将矩阵转换为序列吗? 对于这个迭代更新,我是否需要使用T-SQL(我通过阅读其他一些答案找到了这种方式?
答案 0 :(得分:2)
没有内置功能可以更容易地更新数据库中的F#matrix
,因此您必须自己编写更新。我认为最好的方法是使用for
简单地迭代矩阵,并在值发生变化时运行update命令。类似的东西:
let m1 = matrix [[1.;0.]; [0.;2.]] // The original value from DB
let m2 = m1 + m1 // New updated matrix
for i in 0 .. (fst m1.Dimensions) - 1 do
for j in 0 .. (snd m1.Dimensions) - 1 do
if m1.[i, j] <> m2.[i, j] then
// Here you need to do the actual update
printfn "SET %d, %d = %f" i j m2.[i, j]
您的函数已经显示了如何运行单个UPDATE命令 - 请注意,如果您没有返回一系列结果,则无需将其包装在seq { .. }
中(此处,您只是想执行一些行动)。
如果更改的值很大,那么使用一些批量更新功能可能很有用(这样你就不会运行太多可能很慢的SQL命令),但我不确定MySQL是否有这样的事情。