mysql - 使用Foxpro将数据插入MYSQL

标签 mysql insert foxpro

在使用 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/

相关文章:

c# - OleDB 无法确定十进制值

mysql - MySql DB 集群还是唯一索引?

php - 我有逗号分隔的列,需要在 mysql 中从它们中获取最常见的值

mysql - 获取最新日期记录的分组最大查询

php - 在 mysql 查询中使用纪元 unix 时间戳

java - 使用java将行插入mysql中的表时如何获得自动递增的列值?

mysql - 将不存在的记录插入Mysql表中

python - 将 .CSV 转换为 .DBF(dBASEIII) VFP 6.0,一切都变成了备忘录字段

arrays - Postgres 8.4.3 : How do convert names and string of names to normalized numerical ids using unnest

format - DBase7 中的时间戳