我有一个vb.net程序,我正在从VS2005编译转换为VS2008,并且还要在不同的服务器上运行。
这有效: vb.net 2005,在带有Oracle 10驱动程序的服务器上运行,写入Oracle 10g数据库。
vb.net 2008编译为x86,在使用Oracle 11驱动程序的本地Win7计算机上运行调试,写入Oracle 10g数据库。
这不起作用: vb.net 2008编译为x86,在带有Oracle 10或11驱动程序的服务器上运行,写入Oracle 10g数据库
问题是程序没有写任何东西,但它也没有返回任何错误。它声称它工作正常。以下代码在运行时不会提供任何错误。
此代码设置连接信息(我刚注意到它没有try catch)
Private Sub SetConnectionToDB(ByRef oCMD As OracleCommand)
Dim connectionString As String
connectionString = My.Settings.ImportDataConnectionString
Dim OraDBConnection As OracleConnection
OraDBConnection = New OracleConnection(connectionString)
oCMD.Connection = OraDBConnection
oCMD.CommandType = CommandType.Text
End Sub
然后以下代码写入数据。这里没有发生错误,在此之后,日志成功写入,因此它确实超过了这一点。
编辑:我在下面的ExecuteNonQuery语句之后添加了一个print命令的日志。如果我只能找出问题,它会在日志中打印我希望插入的记录。
Private Sub StoreDataInDB(ByVal insertCommand As String, ByRef oCMD As OracleCommand, ByRef logStream As StreamWriter)
' Connect to the Oracle database and send the insert statement
Try
oCMD.CommandText = insertCommand
oCMD.Connection.Open()
oCMD.ExecuteNonQuery()
Catch ex As Exception
'send error to a log
'MsgBox(ex.Message())
logStream.WriteLine("----------- Error occurred inserting data to Oracle -----------")
logStream.WriteLine(insertCommand)
logStream.WriteLine()
logStream.WriteLine(ex.Message())
logStream.WriteLine()
Finally
oCMD.Connection.Close()
End Try
End Sub
我仍然不确定的一件事(我正在等待回复),是我的连接字符串。我没有看到我的数据源在我的电脑上被识别出来,我不确定它是在服务器上定义的,还是在哪里定义的。我的连接字符串如下所示:
connectionString="Data Source=OracleDB;User ID=UserIDHere;Password=PasswordHere;Unicode=True;Persist Security Info=True;"
Insert命令是格式为
的字符串 "Insert into user.table (" & _
"FieldName1, " & _
"FieldName2, " & _
"FieldName3) VALUES (" & _
Value1 & ", " & _
Value2 & ", " & _
Value3 & ")"
对于要查看的方向,尝试的内容有什么想法吗?
编辑:我编译为x86和x64(它是64位服务器)。我已经要求在oCMD.ExecuteNonQuery上返回值,并且它假装写1条记录时返回1。我已经搞乱连接字符串并尝试了各种选项。有时它会失败,但是当它确实有效时,它仍会无声地失败。服务器上的oracle驱动程序是OraClient10g_64。
答案 0 :(得分:0)
@BalaR有正确的想法 - 连接字符串在app.config中定义,我正在进行清理和重建。但是,My Project中有一个名为Settings.Designer.vb的自动生成的文件,并且不会在clean上重新生成。它有一个指向不同数据库的连接字符串。
在我的电脑上,无论是否处于调试模式,它都使用了app.config中的设置。在服务器上,它使用了另一个连接字符串,并且正在写入另一个数据库。
需要重新生成该自动生成的文件(双击My Project,选择Settings选项卡,它将自行重建),以便它与app.config文件匹配。