【发布时间】:2012-04-28 07:59:58
【问题描述】:
我有这段代码来更新数据库,但是当我使用正确的数据运行它时,它执行时没有错误,但数据库没有更新
Dim conn As New SqlClient.SqlConnection(My.Resources.conn_str)
Dim SQL As String = "Update vehicle SET make=@make,reg_no=@reg_no,model=@model,year=@year,type=@type,last_service=@last_service Where (id = @id)"
conn.Open()
Try
Dim cmd As New SqlClient.SqlCommand(SQL, conn)
Try
cmd.Parameters.AddWithValue("@make", strMake)
cmd.Parameters.AddWithValue("@reg_no", strRegnNum)
cmd.Parameters.AddWithValue("@model", strModel)
cmd.Parameters.AddWithValue("@year", intYear)
cmd.Parameters.AddWithValue("@type", strType)
cmd.Parameters.AddWithValue("@last_service", LastService)
cmd.Parameters.AddWithValue("@id", ID.ToString)
cmd.ExecuteNonQuery()
cmd.Dispose()
Catch ex As Exception
Return ex.Message
End Try
Catch ex As Exception
Return ex.Message
Finally
conn.Dispose()
End Try
由于我没有收到错误消息,任何人都可以帮助我解决其无法正常工作的原因吗?
谢谢
编辑 我用
替换了 cmd.ExecuteNonQuery()Dim intAffected As Integer = cmd.ExecuteNonQuery()
Debug.Print(intaffected)
我在输出窗口中得到 1
【问题讨论】:
-
什么是
conn_str?你如何验证更新没有发生?大多数时候我看到这种症状,他们使用 Express 和用户实例 / attachdbfilename 并且正在更新数据库的实例与正在检查的实例不同。 -
我有一个远景:您有一个表格,您想在其中更改值。在服务器单击事件中,您正在保存值(即 sn-p)。在页面加载中,您正在加载表单的值?!页面加载会在您存储之前覆盖输入的值......正如我所说的只是猜测,发生在我身上不止一次。
-
从您的 SQL Profiler 输出中,参数中的值是您输入的数据吗?另外,我注意到 ID.ToString 已将您的 @id 参数强制为 nvarchar(1) 而不是 int。 SQL 应该有一个允许这样做的隐式转换,但我会更改您的代码,将此参数作为 int 并查看是否可以。
-
在看到您关于值与原始值相同的评论后,听起来@PhilippMehrwald 是正确的,您正在恢复原始值,如果这是一个 Web 表单应用程序,最有可能在 Page_Load 中。至于解决 ID 数据类型问题,只需使用 cmd.Parameters.AddWithValue("@id", ID)
-
假设这是一个 Web 表单应用程序,请确保将数据加载到文本框中的任何位置都在“如果不是 Page.IsPostback() then”中
标签: asp.net .net sql sql-server-2005