如何将CommandText传递给另一个MySqlCommand?

时间:2015-12-23 15:38:22

标签: mysql vb.net

标题有点狡猾,我会尝试更好地解释。所以在我的应用程序中,我有两个连接字符串,一个用于本地数据库,另一个用于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*\(.*\) 属性,但我无法访问此属性。

我究竟做错了什么?我怎么能做到这一点?

1 个答案:

答案 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  
   ....