2016-11-17 3 views
1

SQLDataReaderを使用してSQLデータベースからIPv4情報を取得するASP.Netアプリケーションを使用して作業します。 SQLからIPを読むとき、データ型はバイナリであり、これを処理する最善の方法はわかりません。SQLDataReaderを使用してIPアドレスを読み取る

SQLDataReader.GetIPAddress()のメソッドがないので、SQLDataReader.GetBytes()を使用する必要があるようです。 getstringは非常に簡単なので、これを行う方法の多くの例はオンラインですが、getbyte()や別のメソッドを使用してIPを呼び出す方法がもう1つあります。

Do While SQLReader.Read() 
     Dim lastcom As System.DateTime = SQLReader.GetDateTime(0) 
     Debug.WriteLine(lastcom.ToString("MM/dd/yyyy HH:mm:ss.fff")) 
     Debug.WriteLine(SQLReader.GetString(1)) 
     Debug.WriteLine(SQLReader.GetBoolean(2)) 
     Debug.WriteLine(SQLReader.GetString(3)) 
     Debug.WriteLine(SQLReader.GetString(4)) 
     Label_IP = SQLReader.GetString(1)    
     Label_Model.Text = SQLReader.GetString(4) 
    Loop 
+2

あなたがこれを変換しようとしていますC#に?データベースに格納されているIPは何ですか、私はそれが 'String'として格納されると仮定していますので、例えば' varchar'や 'nvarchar'などです。 – Greg

+0

C#に変換する必要はありません。私は通常vb.netで書き込みます。Getstringは「タイプ 'System.Byte []'のオブジェクトをキャストして 'System.String'をタイプできません。 GetDataTypeNameは列のバイナリを返しますが、データベースには実際のipv4アドレスのみがxx.xx.xx.xxに似た形式で格納されます。 – jewbacca

+0

私はVisual Basicを書くことを拒否しますが、 'byte []'として取得し、C#では 'System.Text.Encoding.GetString(...)'とするだけです。したがって、 'byte []'をバイトデータから文字列値に変換し直してください。 – Greg

答えて

0

私は、IPアドレスがデータベースに保存されている(とIPv4のみのアドレスをサポートしている)が、あなたはこのような何かを試すことができているかについて、いくつかの仮定を作っています:

Dim ipAddr(3) As Byte 
' Assuming that column #1 is your IP address column 
Dim byteCount = SQLReader.GetBytes(1, 0, ipAddr, 0, 4) 
If byteCount = 4 Then 
    Label_IP.Text = New IPAddress(ipAddr).ToString() 
Else 
    Console.WriteLine("Expected 4 bytes for IP address") 
End If 
+0

完璧に作業しました!ありがとう!..また、さらに見て、バイナリ変換を担当するSQL側でいくつかのストアドプロシージャが見つかりました。なぜこれがここに当てはまるのか分かりませんが、いずれにしても助けに感謝します! – jewbacca

+0

@jewbacca喜んでそれは助けた。ストアドプロシージャが何をするのか不明 - ['IPAddress.GetAddressBytes'](https://msdn.microsoft.com/en-us/library/system.net.ipaddress.getaddressbytes(v = vs.110).aspx) IPアドレスのバイト配列を返します。あなたは[this](https://stackoverflow.com/help/someone-answers)を見てみたいかもしれません。投票に答えて/受け入れることは、感謝の言葉としては最高の方法です。 :-) – Mark

関連する問題