为什么我的SQL查询没有做任何事情?

时间:2009-07-03 13:42:24

标签: vb.net sql

您好我有这个查询字符串我必须运行所以我可以更新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”是表的关键和标识,我试图在更新或不更新字段的情况下运行查询,并且它是相同的。 有什么建议吗?

6 个答案:

答案 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