标题有点狡猾,我会尝试更好地解释。所以在我的应用程序中,我有两个连接字符串,一个用于本地数据库,另一个用于Web数据库。必须使用相同的记录更新这两个数据库。现在在我的应用程序中,当我在本地数据库中添加记录时,我执行一个函数,将 Dim query = "INSERT INTO text_app (name, last_name)
VALUES(@namep, @last_namep)"
Dim MySqlCommand = New MySqlCommand(query, dbCon)
MySqlCommand.Parameters.AddWithValue("@namep", name.Text)
MySqlCommand.Parameters.AddWithValue("@last_namep", last_name.Text)
MySqlCommand.ExecuteNonQuery()
Sync.SyncOut(MySqlCommand) 'Pass the object to another function
对象传递给另一个使用Web数据库的另一个连接字符串的函数。在第二个函数中,我需要执行已在本地数据库中执行的相同操作。示例代码:
功能本地数据库
Using dbCon As MySqlConnection = establishWebConnection()
Try
dbCon.Open()
Dim MySqlCommand = New MySqlCommand(query_command, dbCon)
MySqlCommand.ExecuteNonQuery()
Return True
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Using
功能网络数据库(SyncOut)
query_command
现在MySqlCommand
包含从本地函数传递的dbCon
,.ExecuteNonQuery
是新的连接对象。
当我在SyncOut
函数上执行.CommandText
时,出现此错误:
从“MySqlCommand”类型到“String”类型的无效转换。
我需要的是query_command
中包含的(county of|county)\s*\(.*\)
属性,但我无法访问此属性。
我究竟做错了什么?我怎么能做到这一点?
答案 0 :(得分:1)
要做的第一件事是更改代表MySqlCommand的变量的名称。我无法找到任何合理的理由让这种混淆在你的代码中传播。
,即使语言允许,也不要使用同一名称命名变量,这是非常令人困惑的Dim query = "INSERT INTO text_app (name, last_name)
VALUES(@namep, @last_namep)"
Dim cmd = New MySqlCommand(query, dbCon)
当然,用新的名称更改旧名称的每个引用。
现在在SyncOut的声明中写
Public Sub SyncOunt(ByVal cmd As MySqlCommand)
...
' Do not forget to open the connection '
dbCon.Open()
Dim aDifferentCommand = cmd.Clone()
aDifferentCommand.Connection = dbCon
....