0

我有一个关键要求,需要通过表单和按钮访问来更新 Sql server 中的表,当用户单击表单中的按钮时,他应该能够更新数据库中已经存在的记录。

例如:表有列 -EmployeeID 、 Employee Name 、 Employee Location

EmployeeID Values
-----
1001|
2301|
3212|

假设用户想要单独更新 EmployeeName 的值而不是员工位置,在某些情况下他应该能够做到这一点。

update table set EmployeeName=@New_employee_name , Employee Location=@New_employee_location where EmployeeID=@Employee_ID

这应该通过 vb 驱动。net 程序以更新数据库中的用户输入值。

4

1 回答 1

0

我建议您在 SQL Server 上创建一个存储过程,这是一个示例:

CREATE PROCEDURE sp_UpdateEmployeeByID
(
@ID int, 
@TitleID int, 
@FirstName nvarchar(255), 
@LastName nvarchar(255)
)
AS 
BEGIN 
SET NOCOUNT ON;


UPDATE Employee SET 
TitleID = @TitleID, 
FirstName = @FirstName, 
LastName = @LastName
WHERE  ID = @ID
END

使用存储过程而不是 ad-hoc SQL 可以保护您免受 SQL 注入攻击,而且还有性能优势。

然后使用 VB.Net,您将需要调用存储过程,传入更新的员工值。

Public Sub UpdateEmployeeByID(Byval ID As Int32, Byval TitleID As Int32, Byval FirstName As string, Byval LastName As string)

Dim connString As String = ConfigurationManager.AppSettings("ConnectionString")
Dim conn As New SqlConnection(connString)
conn.Open()
Dim sqlCommand As new SqlClient.SqlCommand("sp_UpdateEmployeeByID", conn)
sqlCommand.CommandType = CommandType.StoredProcedure

sqlCommand.Parameters.AddWithValue("@ID", ID)
sqlCommand.Parameters.AddWithValue("@TitleID", TitleID)
sqlCommand.Parameters.AddWithValue("@FirstName", FirstName)
sqlCommand.Parameters.AddWithValue("@LastName", LastName)

Try
sqlCommand.ExecuteNonQuery()

Catch ex As SqlException
'Handle SQL exceptions

Catch ex As Exception
'Handle exceptions

Finally
'clean up resources that access Data
    If IsNothing(sqlCommand) = False Then
        sqlCommand.Dispose()
        sqlCommand = Nothing
    End If
conn.Close()
End Try

End Sub
于 2012-07-25T02:05:36.693 回答