2012-04-17 80 views
0

我有这样的代码更新数据库,但是当过我用正确的数据运行它,它的执行没有错误,但DATABSE没有更新数据库SQL更新不影响数据库

Dim conn As New SqlClient.SqlConnection(My.Resources.conn_str) 
Dim SQL As String = "Update vehicle SET [email protected],[email protected]_no,[email protected],[email protected],[email protected],[email protected]_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

+0

这不会改变一点 – Philipp 2012-04-17 00:23:36

+0

它没有在那里,我只是玩这个,它仍然dosent工作 – Smith 2012-04-17 00:24:01

+0

已经删除:-),查询似乎没有错。看看这个ID,它是用大写字母写的,所有其他变量都是骆驼大小写的,可能是,你的“ID”是错误的“ID” – Philipp 2012-04-17 00:26:16

回答

2

的一点想法:

  1. 如果您有权访问SQL Profiler,则可以看到查询,值,结果,任何触发器,任何事务等。这是识别正在发生的事情的最简单方法。
  2. 如果您无法访问Profiler,请更新您的查询以包含OUTPUT子句,并使用ExecuteReader将插入的*和删除的* *值返回到SqlDataReader中。检查结果。
  3. 如果id是一个int,请不要在parameter.AddWithValue上使用ID.ToString()。使用整数本身,因为带有字符串值的AddWithValue方法可能导致将ID参数配置为varchar/nvarchar。
+0

Profiler肯定。我用Profiler开始调试和逆向工程的四分之一。 – 2012-04-17 00:45:08