Excel VBA - Oracle数据库连接 - 执行更新查询不起作用

问题描述:

我正在使用Excel VBA连接Oracle数据库并运行一些查询。我已经运行了一些复杂的选择查询,它工作正常。但它无法运行简单的更新查询。当我运行查询时,应用程序挂起并且查询未执行(我检查了数据库并没有看到任何更新)。当我使用SQL开发人员执行更新时,更新查询运行良好。请帮忙。以下是代码 -Excel VBA - Oracle数据库连接 - 执行更新查询不起作用

Sub checkupd() 

strDriver = "Microsoft ODBC for Oracle" 
strHost = ThisWorkbook.Sheets("Querygen").Cells(3, 17).Value 
strPort = ThisWorkbook.Sheets("Querygen").Cells(4, 17).Value 
strUser = ThisWorkbook.Sheets("Querygen").Cells(5, 17).Value 
strPassword = ThisWorkbook.Sheets("Querygen").Cells(6, 17).Value 
strSID = ThisWorkbook.Sheets("Querygen").Cells(7, 17).Value 

'Connection String 
strCon = strCon & "CONNECTSTRING=(DESCRIPTION=" 
strCon = strCon & "(ADDRESS=(PROTOCOL=TCP)" 
strCon = strCon & "(HOST=" & strHost & ")(PORT=" & strPort & "))" 
strCon = strCon & "(CONNECT_DATA=(SID=" & strSID & "))); " 
strCon = strCon & "uid=" & strUser & ";pwd=" & strPassword & ";" 

strQueryup = "UPDATE DM_RESERVE SET COL1 = 'new3'" 
strQueryup = strQueryup & " WHERE PROD IN ('123','456')" 


Set conn = CreateObject("ADODB.Connection") 
conn.Open strCon 

conn.Execute strQueryup 


MsgBox ("Update Query executed") 


conn.Close 


Set conn = Nothing 
End Sub 
+0

仅供参考,我使用的是excel 2013.我尝试过使用断点进行调试。执行语句存在一些问题。代码在该语句前平滑运行,当代码到达“conn.execute”语句时,excel挂起。有人可能会认为它花费时间来执行查询。我离开了它吊死了10分钟,但数据库中还没有一个更新。 –

谢谢大家的帮助。 我能够通过在更新查询之前和之后使用“COMMIT”来解决此问题。

... 
conn.Execute "COMMIT" 
conn.Execute strQueryup 
conn.Execute "COMMIT" 
.... 

您是否收到任何语法问题,我可以看到空间问题。你可以试试这个

strQueryup = "UPDATE DM_RESERVE SET COL1 = 'new3'" 
strQueryup = strQueryup & " WHERE PROD IN ('123','456')" 
+0

谢谢Rahul。没有得到任何语法问题。我试着运行你提供的。但获得相同的问题(Excel挂起)。我甚至尝试将适当的查询放在一行中。但同样的问题。 –

驱动程序 “微软ODBC的Oracle” 是deprecated的年龄。安装ODBC driver from Oracle并再次尝试。