您好我有这个查询字符串我必须运行所以我可以更新sql server表中的一个不同的行:
servidorSql.ConnectionString = conexao
Dim insert As String = "UPDATE [Equipamentos] SET [ID_Cliente]=@ID_Cliente, [Identificacao] = @Identificacao, [Fabricante] = @Fabricante, [Modelo] = @Modelo, [Versao_Software] = @Versao_Software, [Localizacao] = @Localizacao WHERE [ID_Equipamento]=@ID_Equipamento"
Dim sqlquery As SqlCommand = New SqlCommand(insert, servidorSql)
Try
servidorSql.Open()
sqlquery.Parameters.AddWithValue("@ID_Cliente", ID_Cliente)
sqlquery.Parameters.AddWithValue("@ID_Equipamento", ID_Equipamento)
sqlquery.Parameters.AddWithValue("@Identificacao", Identificacao)
sqlquery.Parameters.AddWithValue("@Fabricante", Fabricante)
sqlquery.Parameters.AddWithValue("@modelo", modelo)
sqlquery.Parameters.AddWithValue("@versao_Software", versao_Software)
sqlquery.Parameters.AddWithValue("@localizacao", localizacao)
sqlquery.ExecuteNonQuery()
servidorSql.Close()
Catch e As SqlClient.SqlException
MsgBox(e.ToString())
End Try
问题是它没有做任何事情,它没有更新表,也没有给我任何异常。 “ID_Equipamento”是表的关键和标识,我试图在更新或不更新字段的情况下运行查询,并且它是相同的。 有什么建议吗?
答案 0 :(得分:1)
尝试添加提交。
即使数据库自动提交,明确处理它也几乎总是更好。
答案 1 :(得分:1)
尝试使用SQL Server Profiler-这将为您提供更多关于正在发生的事情的线索。您有可能传入一个不存在的ID。
答案 2 :(得分:1)
捕获SQL事件探查器跟踪以确认传入的ID的参数绝对是您认为的ID。如果还选择了RowCounts列,则可以看到更新的行数。
答案 3 :(得分:0)
sqlquery.ExecuteNonQuery()指令返回受影响的行数,因此您也可以检查它,例如:
int rowsAffected = sqlquery.ExecuteNonQuery();
Debug.WriteLine("Rows affected: " + rowsAffected);
您还可以查看ID_Equipamento变量。
Debug.WriteLine(ID_Equipamento);
这个变量可能不包含表格主键的值
答案 4 :(得分:0)
你没有插入任何东西。我怀疑你甚至在修改东西。您正在执行 UPDATE 语句。检查是否使用与数据库中存储的值不同的值更新记录。 当然,@ ID_Equipamento可能是不存在的记录的ID,在这种情况下,您不会更新任何内容。这不会产生错误,只是告诉你修改了0条记录。
答案 5 :(得分:0)
问题在于它自己的查询!无法想象你为什么,但不重要。
问题解决了...... 无论如何,谢谢你的帮助。 Aprecciated