我想知道查询哪种方式更好,更安全,更有效。以及是否存在一些重大差异。发送两个代码示例。我需要添加,修改或删除的内容吗?随意表达您的意见。
第一种方式:
Try
con.Close()
con.Open()
Dim sqlQuery As String = "INSERT INTO tblPerson(ID, Name,Email,GenderID) VALUES(@ID, @Name,@Email,@GenderID)"
com = New SqlCommand(sqlQuery, con)
com.Parameters.AddWithValue("@ID", CInt(txtID.Text))
com.Parameters.AddWithValue("@Name", CStr(txtName.Text))
com.Parameters.AddWithValue("@Email", CStr(txtEmail.Text))
com.Parameters.AddWithValue("@GenderID", CInt(txtGender.Text))
com.ExecuteNonQuery()
com.Dispose()
Catch ex As Exception
MessageBox.Show(ex.Message)
con.Close()
Finally
con.Close()
End Try
和第二:
con.Close()
con.Open()
exe = "basicInsert"
Dim startTransaction = con.BeginTransaction
Try
com = New SqlCommand("EXECUTE " & exe & " '" & txtID.EditValue & "','" & txtName.EditValue & "','" & txtEmail.EditValue & "','" & txtGender.EditValue & "'", con)
com.Transaction = startTransaction
com.ExecuteNonQuery()
com.dispose()
startTransaction.Commit()
Catch ex As Exception
startTransaction.Rollback()
MessageBox.Show(ex.Message, ex.GetType.ToString)
End Try
答案 0 :(得分:2)
几乎总是使用第一个选项。第二个选项很容易导致语法错误,并让您对SQL注入开放。