저는 VS2005에서 VS2008로 컴파일하는 vb.net 프로그램을 가지고 있으며, 다른 서버에서 실행하려고합니다.vb.net 프로그램은 오라클에 쓰지 않지만 오류는 없습니다.
작동 방식 : vb.net 2005, Oracle 10 드라이버가있는 서버에서 실행 중, Oracle 10g 데이터베이스에 쓰기.
vb.net 2008은 로컬 11 대의 드라이버가있는 로컬 Win7 머신에서 디버그를 실행하고 Oracle 10g 데이터베이스에 쓰면서 x86으로 컴파일되었습니다.
이
이 작동하지 않습니다 vb.net 2008 86로 컴파일, 오라클 10 또는 11 드라이버를 서버에서 실행, 오라클 10g 데이터베이스에 기록문제는 프로그램이, 아무것도 기록하지 않는다는 것입니다 만 또한 오류를 반환하지 않습니다. 그것은 잘 작동한다고 주장합니다. 다음 코드는 실행시 오류를 제공하지 않습니다.
이 코드는 연결 정보를 설정한다 (그리고 난 그냥 여기에 시도 캐치가없는 것으로 나타났습니다)
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
다음 코드는 데이터를 기록한다. 여기서 오류가 발생하지 않으며이 지점 이후에 로그가 성공적으로 기록되므로이 지점을 지나게됩니다.
EDIT : 아래의 ExecuteNonQuery 문 다음에 insert 명령의 기록에 인쇄를 추가했습니다. 문제를 파악할 수만 있다면 원하는 레코드를 삽입하여 로그에 기록 할 수 있습니다.
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
내가 아직 확신 할 수없는 한 가지 (즉, 회신을 기다리고 있음)는 연결 문자열입니다. 내 데이터 원본이 내 PC에서 식별되는 것을 볼 수 없으며 서버에 정의되어 있는지 또는 어디에서 확인할 수 있는지 잘 모르겠습니다.
connectionString="Data Source=OracleDB;User ID=UserIDHere;Password=PasswordHere;Unicode=True;Persist Security Info=True;"
삽입 명령 형식
"Insert into user.table (" & _
"FieldName1, " & _
"FieldName2, " & _
"FieldName3) VALUES (" & _
Value1 & ", " & _
Value2 & ", " & _
Value3 & ")"
어떤 아이디어가 어떤 방향을 찾아 거기에 무엇을 시도 할 문자열입니다 : 내 연결 문자열은 다음과 같은 것이있다?
편집 : 저는 64 비트 서버 인 x86 및 x64로 컴파일했습니다. oCMD.ExecuteNonQuery에서 반환 값을 요청했으며 1 레코드를 쓰는 것처럼 가장하여 1을 반환합니다. 나는 연결 문자열을 망쳤으며 다양한 옵션을 시도했다. 때로는 실패하지만, 작동하면 조용히 실패합니다. 서버의 oracle 드라이버는 OraClient10g_64입니다.
[예제 사용] (http://connectionstrings.com/oracle)을 사용하여 Oracle의 설치 방법에 따라 연결 문자열을 확인하십시오. 또한 직접 문자열을 값으로 주입하는 대신 SQL 매개 변수를 사용하여 조사해야합니다. 방향 삽입을 사용하는 한, 그 값 중 하나라도 문자열 (SQL에서 사용 된 따옴표 및 VB.NET에서 _ 사용하지 않는 따옴표) 인 경우 SQL 명령에서 따옴표가 빠져 있습니다. – pickypg
데이터베이스에 연결하고 있다고 생각하는 연결 문자열을 확인하십시오. –
@Bala R - 필자는 PC에서 동일한 연결 문자열을 사용했으며 데이터베이스에 쓰기를 수행 했으므로 서버에서 데이터 소스가 어떻게 정의되어 있는지 확인하고 있습니다. – thursdaysgeek