Microsoft Visual Studio .NET 2003
.Net Framework 1.1
VB.net
文字列連結について質問です。
初歩的な質問ですみません。
通常、下記のように
dim strABC AS string
strABC = "あああ"
strABC =strABC & "いいい"
というように連結をおこなった場合、
strABCの中身は"あああいいい"となると思います。
しかし下記の記述で行った際にうまく連結がおこなえませんでした。
どなたかアドバイスをいただけないでしょうか?
===================================================================
Dim strDB As String
strDB = "provider=OraOLEDB.Oracle.1;Data Source=" & mClsCONST.strHost & _
";persist Security Info=False;User ID=" & mClsCONST.strUser & _
";Password=" & mClsCONST.strPass
===================================================================
確認↓↓
?strDB
"provider=OraOLEDB.Oracle.1;Data Source=XXXXXX
※『XXXXXX』はmClsCONST.strHostです
# 接続文字列の構築には、OleDbConnectionStringBuilder を使うべき……
# と書こうとしたのですが v1.1 なので使えないですね。
> しかし下記の記述で行った際にうまく連結がおこなえませんでした。
文字列の接続そのものは、それで正しいはずです。
もしかして、接続情報を ini ファイルから取得していませんか?
文字列の末尾に ChrW(0) すなわち vbNullChar が存在する場合、
?strDB などでは、それ以降の文字が表示されませんので、
そうした異常なデータが紛れ込んでいないか、確認してみてください。
Module Module1
Sub Main()
Dim strDB As String
strDB = "provider=OraOLEDB.Oracle.1;Data Source=" & mClsCONST.strHost & _
";persist Security Info=False;User ID=" & mClsCONST.strUser & _
";Password=" & mClsCONST.strPass
MsgBox(strDB)
End Sub
Class mClsCONST
Public Shared strHost As String = "XXXX" & vbNullChar
Public Shared strUser As String = "YYYY" & vbNullChar
Public Shared strPass As String = "ZZZZ" & vbNullChar
End Class
End Module
>もしかして、接続情報を ini ファイルから取得していませんか?
>
>文字列の末尾に ChrW(0) すなわち vbNullChar が存在する場合、
>?strDB などでは、それ以降の文字が表示されませんので、
>そうした異常なデータが紛れ込んでいないか、確認してみてください。
iniファイルより取得を行っていました。
strDB = Replace("provider=OraOLEDB.Oracle.1;Data Source=" & mClsCONST.strHost & _
";persist Security Info=False;User ID=" & mClsCONST.strUser & _
";Password=" & mClsCONST.strPass,vbNullChar,"")
Replaceを使用し、置換することで解決しました。
ありがとうございました。
> Replaceを使用し、置換することで解決しました。
「vbNullChar を "" に置き換える」という対応方法ではなく、
(修正案1) GetPrivateProfileStringW の戻り値は「有効な文字数」なので、
その戻り値を用いて、その文字数のみを取り出す。
(修正案2) vbNullChar とそれ以降の文字を切り捨てる。
のように修正される事をお奨めします。
>(修正案1) GetPrivateProfileStringW の戻り値は「有効な文字数」なので、
> その戻り値を用いて、その文字数のみを取り出す。
【vbNullChar を "" に置き換える】という対応方法で行うと、空白文字ができてしまう為、修正案1を使用することで解決しました。
ありがとうございました!!
ツイート | ![]() |