2016-08-02 91 views
0

我的代码中有以下子例程,用于将新记录插入到SQL Server数据库中。在逐步完成代码后,代码完成所有操作,出现消息框,但该行实际上并未插入到数据库中。我知道它使用正确的连接,因为我可以在使用SQL Server手动插入的相关网格上查看记录,而且我的UPDATEDELETE查询也可以使用相同的连接,所以我的代码有些问题,但我无法弄清楚什么......任何人都可以帮助我吗?INSERT查询正在执行但未插入

Public Shared Function SaveNewIncident(ByVal clientName As String, dateStart As Date, dateEnd As Date, ByVal incidentProblem As String, ByVal timeStart As String, ByVal timeEnd As String, 
             ByVal incidentSolved As Boolean, ByVal incidentSolution As String, _con As OleDbConnection) 

    Dim tr As OleDbTransaction = Nothing 

    Try 
     tr = _Con.BeginTransaction() 

     Dim Dc As New OleDbCommand 
     Dc.Connection = _con 

     Dim ID As Integer 
     ID = "1" 

     Dc.CommandType = CommandType.Text 
     Dc.CommandText = "INSERT INTO dbo.tblIncidents VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?)" 
     Dc.Transaction = tr 
     Dc.Parameters.Add("@supportID", OleDbType.Integer).Value = ID 
     Dc.Parameters.Add("@clientName", OleDbType.VarChar).Value = clientName 
     Dc.Parameters.Add("@dateStart", OleDbType.Date).Value = dateStart 
     Dc.Parameters.Add("@dateEnd", OleDbType.Date).Value = dateEnd 
     Dc.Parameters.Add("@incidentProblem", OleDbType.LongVarChar).Value = incidentProblem 
     Dc.Parameters.Add("@timeStart", OleDbType.VarChar).Value = timeStart 
     Dc.Parameters.Add("@timeEnd", OleDbType.VarChar).Value = timeEnd 
     Dc.Parameters.Add("@incidentSolved", OleDbType.Boolean).Value = incidentSolved 
     Dc.Parameters.Add("@incidentSolution", OleDbType.LongVarChar).Value = incidentSolution 

     tr.Commit() 

     MsgBox("Save successful") 

    Catch ex As Exception 

     mdInit.errorLog(ex.Message, ex.StackTrace) 
     MsgBox("Failed to save data, refer to error log") 
     tr.Rollback() 

    End Try 

End Function 
+4

我觉得你需要之前'tr.Commit调用'Dc.ExecuteNonQuery()'()' – user5226582

+0

@ user5226582是的,谢谢你,当然...只是一些愚蠢的 – David

回答

2

您还没有执行插入查询。添加下面的代码之前tr.Commit()

Dc.ExecuteNonQuery() 
+0

谢谢Akshey,这工作。我想改变的一件事是,在这段代码中,supportID始终输入为1 ...我如何调整代码以找到数据库中最高的ID号,添加1并插入此数字? – David

+1

将support-id列转换为标识列。这样你将永远得到所需的价值。 –

+0

我原来是这样的,但是在程序中有一点我需要它,因为当你想要插入明确的值到标识列时,我必须插入明确的值 – David