在使用 native 表的 FoxPro 中,我通常在插入新数据时执行此操作。
Sele Table
If Seek(lcIndex)
Update Record
Else
Insert New Record
EndIf
如果我使用 MYSQL 作为我的数据库,最好、最快的方法是什么 使用 SPT 在 FoxPro 代码中执行此操作吗?我将更新大量记录。 最多 80,000 笔交易。
谢谢, 赫伯特
最佳答案
我只会将 Jerry 提供的内容更进一步。当尝试使用 SQL 传递处理任何插入、更新、删除时,可能会遇到基于 SQL 注入(inject)类似原理的可怕调试问题。
如果您的“myValue”字段有单引号、双引号、双连字符(表示注释)怎么办?你会被浇灭的。
参数化您的语句,例如使用 VFP 变量引用,然后使用“?”在您的 sql 语句中限定应使用哪个“值”。 VFP正确通过。这也有助于数据类型,例如在构建“myStatement”时将数字转换为字符串。
另外,在VFP中,您可以使用TEXT/ENDTEXT来简化命令的可读性
lcSomeStringVariable = "My Test Value"
lnANumericValue = 12.34
lnMyIDKey = 389
TEXT to lcSQLCmd NOSHOW PRETEXT 1+2+8
update [YourSchems].[YourTable]
set SomeTextField = ?lcSomeStringVariable,
SomeNumberField = ?lnANumericValue
where
YourPKColumn = ?lnMyIDKey
ENDTEXT
=sqlexec( yourHandle, lcSQLCmd, "localCursor" )
关于mysql - 使用Foxpro将数据插入MYSQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16351090/