2016-11-17 1 views
1

SQLDataReader를 사용하여 SQL 데이터베이스에서 IPv4 정보를 가져 오려는 ASP.Net 응용 프로그램에 대한 작업. SQL에서 IP를 읽을 때 데이터 유형은 바이너리이며이를 처리하는 가장 좋은 방법은 확실치 않습니다.SQLDataReader를 사용하여 IP 주소 읽기

SQLDataReader.GetIPAddress() 메서드가 없으므로 SQLDataReader.GetBytes()를 사용해야 할 것 같습니다. getstring은 매우 간단하기 때문에 어떻게하는지에 대한 온라인 예제가 많이 있는데, getbyte() 나 다른 메소드를 사용하여 IP를 가져 오는 또 다른 간단한 방법이 있기를 바라고 있습니다.

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.String'유형의 'System.Byte []'유형의 객체를 캐스팅 할 수 없습니다."라는 오류가 발생합니다. " GetDataTypeName은 열에 대해 이진수를 반환하지만 데이터베이스에서 열은 실제 ipv4 주소 만 xx.xx.xx.xx와 비슷한 형식으로 포함합니다. – jewbacca

+0

Visual Basic을 쓰는 것을 거부하지만'byte []'로 검색하고 C#에서는'System.Text.Encoding.GetString (...)'만하면됩니다. 그래서 byte 데이터를 다시 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