在数据库同步中保留相同的ID

时间:2015-12-24 08:37:38

标签: php mysql vb.net

我已经创建了一个Web调度程序,允许我的客户与我的公司进行预约,一切运作良好。现在,vb.net中的另一个应用程序与我的提供商的其他功能一样,此应用程序仅供我的提供商使用,因此在我自己的公司而不是我的客户。左,对不起。无论如何,我想要做的是在vb.net中创建一个类,将客户端数据同步到Web数据库。这两个数据库都是MySql,所以我在我的客户端应用程序中预约,我的代码执行了一个查询,将相同的记录添加到在线数据库。
这里没有问题,一切运作良好,事实上我和#39 ; ve为客户创建了两个字符串连接,为Web创建了另一个字符串连接 现在,最大的问题是,如果我创建eg。在我的客户端应用程序中具有ID(auto_increment结构)5的约会,在Web数据库中添加此记录的查询也会插入不同的ID。这对我来说是一个问题,因为我将来无法识别特定的记录。
我怎么能解决这个问题?实际上我使用MySqlCommand来执行操作。
如果我错过了一些我很乐意提供的细节,希望能得到帮助。

1 个答案:

答案 0 :(得分:1)

假设您有此代码在本地数据库表中插入数据,此表有一个名为“nameID”的字段,它是一个自动增量字段

Dim nameID As Integer
Dim cmdText = "INSERT INTO myTableName (Name, Surname, City) VALUES (@name, @surname, @city)"
Using cnLocal = New MySqlConnection(...local_connection_string)
Using cmdLocal = New MySqlCommand(cmdText, cnLocal)
   cnLocal.Open
   ' Add the parameters values'
   cmdLocal.Paramenters.Add(......)
   cmdLocal.ExecuteNonQuery()

  ' At this point you could catch the last inserted id using the property  
  ' LastInsertedID from the same command that you have just executed

   nameID = cmdLocal.LastInsertedId
End Using
End Using

如您所见,第一个查询不会尝试为字段“nameID”插入任何内容,而是获取本地数据库为该字段分配的值。

现在,您对远程数据库执行修订后的命令,但更改命令文本和参数集合以在远程数据库中添加nameID字段的值

 cmdText = "INSERT INTO myTableName (nameID, Name, Surname, City) VALUES (@id, @name, @surname, @city)"
 Using cnRemote = new MySqlConnection( ... connection string to the remote db..)
 Using cmdRemote = cmdLocal.Clone
    cnRemote.Open()
    cmdRemote.Connection = cnRemote
    cmdRemote.CommandText = cmdText
    cmdRemote.Parameters.Add("@id",MySqlDbType.Int32).Value = nameID
    cmdRemote.ExecuteNonQuery()
 End Using

Clone命令复制了cmdRemote中创建克隆的源(cmdLocal)中的所有内容,当然您需要更改连接,并且命令文本指向远程数据库。