如何在一行上使用ExecuteNonQuery?

时间:2013-07-24 12:10:47

标签: asp.net .net vb.net

我目前有一些代码:

Dim InsertSecondCmd As New MySqlCommand("INSERT INTO [modules_access] (module_id, company_id) VALUES (5, " & intCompanyID & ")", thisConnection)
InsertSecondCmd.ExecuteNonQuery()

我可以整理一下,并以某种方式将代码放在一行吗?

例如

ExecuteNonQuery(MySqlCommand("INSERT INTO [modules_access] (module_id, company_id) VALUES (5, " & intCompanyID & ")", thisConnection))

我尝试了一些变化,但找不到一个有效的。建议欢迎!

1 个答案:

答案 0 :(得分:4)

当然,你可以这样做:

Dim affectedRows As Int32 InsertSecondCmd As New MySqlCommand("INSERT INTO [modules_access] (module_id, company_id) VALUES (5, " & intCompanyID & ")", thisConnection).ExecuteNonQuery()

但我不确定这有什么好处。

最后,这种方法的问题越来越多。连接和命令没有正确处理,它对SQL注入是开放的,并且它几乎不可读。

例如,这就是您的代码应该的样子:

Using c As MySqlConnection = new MySqlConnection(connString)
    c.Open();
    Using cmd As MySqlCommand = new MySqlCommand("INSERT INTO [module_access] (`module_id`, `company_id`) VALUES (@module_id, @company_id)", c)
        cmd.Parameters.AddWithValue("@module_id", 5)
        cmd.Parameters.AddWithValue("@company_id", intCompanyID)

        cmd.ExecuteNonQuery()
    End Using
End Using