|
分類:[.NET 全般]
VB.NETでOracleのODBCを作成するプログラムを作成しています。
ODBC自体は作成出来るのですが、ODBCを作成した後のAPIの関数の戻り値が0に なって戻ってきます。
きちんと管理ツールのデータソースを確認した所、ODBCは作成出来ています。
Accessで実際にそのODBCを使用出来るか確認した所、問題なく正常に動作しました。
なぜ作成時にエラーで返ってくるのでしょうか?原因が分かる方教えて下さい。
ソースは以下になります。
/*************************************************************************************************************** Imports System.Runtime.InteropServices
Public Class Form1
Private Const ODBC_ADD_SYS_DSN As Integer = 4 ' システムデータソースを追加
Private AddOdbcDNS As String = "" ' データソース名 Private AddOdbcDescription As String = "" ' 説明 Private AddOdbcService As String = "" ' TNSサービス名 Private AddOdbcUser As String = "" ' ユーザー Private AddOdbcPass As String = "" ' パスワード
<DllImport("ODBCCP32.DLL", CharSet:=CharSet.Auto, SetLastError:=True)> _ Private Shared Function SQLConfigDataSource(ByVal hwndParent As Integer, _ ByVal fRequest As Integer, _ ByVal lpszDriver As String, _ ByVal lpszAttributes As String) As Integer
End Function
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 'ODBC作成のパラメータをセットする AddOdbcDNS = "TEST" AddOdbcDescription = "テスト用" AddOdbcService = "TESTDB" AddOdbcUser="USER" AddOdbcPass="USER"
'ODBCデータソースの作成 Call CreateODBC() End Sub
Private Sub CreateODBC() Dim strDriver As String Dim strParam As String
' ODBCドライバを指定する strDriver = "Oracle in OraClient11g_home1"
' データソースとして登録する属性を Chr(0) で区切り指定する strParam = "DSN=" + AddOdbcDNS + Chr(0) strParam = strParam + "Description=" + AddOdbcDescription + Chr(0) strParam = strParam + "ServerName=" + AddOdbcService + Chr(0) strParam = strParam + "UserID=" + AddOdbcUser + Chr(0)
'strParam = ""
' データソースの登録 Dim intRet = SQLConfigDataSource(0, ODBC_ADD_SYS_DSN, strDriver, strParam)
' 登録の成功・失敗の判断 If intRet Then MessageBox.Show("データソースを登録しました。", "登録", MessageBoxButtons.OK) Else MessageBox.Show("登録に失敗しました。", "登録", MessageBoxButtons.OK, MessageBoxIcon.Error) End If End Sub
End Class ***************************************************************************************************************/
長文失礼しました。
|