C# 用C语言插入foxpro6表的最佳方法

C# 用C语言插入foxpro6表的最佳方法,c#,asp.net,.net,sql,foxpro,C#,Asp.net,.net,Sql,Foxpro,我有一个任务,将记录插入到foxpro表中。 有一个名为“submitid”的列,但它不是主键。我必须以maxsubmitid+1的增量插入一个数字。 如果两个用户同时提交相同的查询会怎么样。它会有相同的复制submitid吗?对于并发用户,您可能最终会复制id。我在FoxPro中看到的处理方法之一是一个跟踪当前id的表,很像postgres中的序列,如果你想确定的话,要解决这个问题而不是使用Max。还需要在检索和增加值之前锁定表。对于并发用户,你可能会复制id。我在FoxPro中看到的处理方法

我有一个任务,将记录插入到foxpro表中。 有一个名为“submitid”的列,但它不是主键。我必须以maxsubmitid+1的增量插入一个数字。
如果两个用户同时提交相同的查询会怎么样。它会有相同的复制submitid吗?

对于并发用户,您可能最终会复制id。我在FoxPro中看到的处理方法之一是一个跟踪当前id的表,很像postgres中的序列,如果你想确定的话,要解决这个问题而不是使用Max。还需要在检索和增加值之前锁定表。

对于并发用户,你可能会复制id。我在FoxPro中看到的处理方法之一是跟踪当前id的表,很像postgres中的序列,如果您想确定的话,要解决这个问题而不是使用Max。还需要在检索和增加值之前锁定表。

您可以使用OLEDB CommandText,通过使用VFP命令和函数获取下一个数字并插入记录来实现这一点

下面是假的,但你应该明白了。EXECS是一个VFP函数,允许您执行本机VFP命令和函数

 oCommand.CommandText = "EXECS([USE MyTable AGAIN SHARED IN 0] + chr(13) + [FLOCK("MyTable")] + chr(13) + ["get number"] + chr(13) + [INSERT INTO MyTable (col1, col2) VALUES (nextid, othervalue) ] )"

您可以使用OLEDB CommandText通过使用VFP命令和函数获取下一个数字并插入记录来实现这一点

下面是假的,但你应该明白了。EXECS是一个VFP函数,允许您执行本机VFP命令和函数

 oCommand.CommandText = "EXECS([USE MyTable AGAIN SHARED IN 0] + chr(13) + [FLOCK("MyTable")] + chr(13) + ["get number"] + chr(13) + [INSERT INTO MyTable (col1, col2) VALUES (nextid, othervalue) ] )"

什么是chr13+[get number]+chr13 chr13是carrige return。Get number是实际获取下一个数字的代码的占位符。我应该将SELECT maxmyID+1作为maxid从MyTable放入光标NextNo+CHR13+nNextID=NextNo.maxid或类似的东西,以获得实际的下一个数字。但我现在不在FoxPro面前,也不知道哪一个命令可以得到下一个数字。因此,上面的方法应该有效,并且可以在Insert语句中使用nNextID。什么是chr13+[get number]+chr13 chr13是carrige return。Get number是实际获取下一个数字的代码的占位符。我应该将SELECT maxmyID+1作为maxid从MyTable放入光标NextNo+CHR13+nNextID=NextNo.maxid或类似的东西,以获得实际的下一个数字。但我现在不在FoxPro面前,也不知道哪一个命令可以得到下一个数字。因此,上述方法应该有效,并且可以在Insert语句中使用nNextID。