【发布时间】:2015-08-20 03:21:31
【问题描述】:
只是寻找我的更新语句无法按预期执行的答案。我在 SQL Server 中创建了一个名为“Update_Employee”的存储过程,然后我在 VB.Net 中调用了该过程来更新记录。这是我到目前为止所做的:
VB.net
Dim con As New SqlConnection(ConfigurationManager.ConnectionStrings("conEmployee").ConnectionString)
Dim cmd As New SqlCommand
cmd.CommandType = CommandType.StoredProcedure
cmd.CommandText = "Update_Employee"
cmd.Parameters.AddWithValue("@empID", SqlDbType.Int).Value = lblIDNum.Text.Trim
cmd.Parameters.AddWithValue("@empName", SqlDbType.VarChar).Value = txtName.Text.Trim
cmd.Parameters.AddWithValue("@empAdd", SqlDbType.VarChar).Value = txtAddress.Text.Trim
cmd.Parameters.AddWithValue("@empPhone", SqlDbType.VarChar).Value = txtPhone.Text.Trim
cmd.Parameters.AddWithValue("@empEmail", SqlDbType.VarChar).Value = txtEmail.Text.Trim
cmd.Connection = con
Try
con.Open()
cmd.ExecuteNonQuery()
Catch ex As Exception
Throw ex
Finally
con.Close()
con.Dispose()
End Try
存储过程脚本:
USE [Company]
GO
/****** Object: StoredProcedure [dbo].[Update_Employee] Script Date: 08/20/2015 11:20:27 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[Update_Employee]
@empID int,
@empName varchar(50),
@empAdd varchar(50),
@empPhone nchar(11),
@empEmail varchar(50)
AS
BEGIN
SET NOCOUNT ON;
UPDATE tbl_EMPLOYEE SET EMP_NAME = @empName, EMP_ADD = @empAdd, EMP_PHONE = @empPhone, EMP_EMAIL = @empEmail
WHERE EMP_ID = @empID
END
【问题讨论】:
-
请不要编码
Catch ex As Exception Throw ex。那只会让你伤心。至于Try块的其余部分,您应该改用Using。 -
将
con.Open()更改为cmd.Connection.Open()。在您的示例中,您先打开它。然后当你调用你的 executenonquery 时,它不会有一个打开的连接,因为它已经打开了...... -
什么是不会按预期执行?不做任何改变?做出错误的改变?当您在调试中执行代码时,
cmd.ExecuteNonQuery()行是否运行?您确定表格和表格之间的empID 匹配吗?你确定你在正确的数据库中运行它吗?一个快速的方法是使用 SQL Profiler。 -
嗨..我去修改源代码..但没有成功..上面发布的代码不会对数据库记录进行任何更改。
-
@cliecel john 显示您的连接字符串...