2012-04-17 137 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