0

重要な要件があります。フォームとボタンを介したアクセスから SQL サーバーのテーブルを更新する必要があります。ユーザーがフォームのボタンをクリックすると、データベースに既に存在するレコードを更新できるはずです。

例: テーブルには列があります -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

アドホック 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 に答える