已經按照MSDN上面的方式測試了一個多小時,一直錯、一直錯,錯到我快抓狂了。

好在,皇天不負苦心人,最後竟然被我給找到原因了。
中途用了VB的語法以及C#的語法,所以這邊兩個都紀錄一下吧!

由於IP的資料是已經存在資料庫欄位裡了,所以只打算從資料庫取值來查DNS Name。

包含了,VB與C#連結SQL Server資料庫的語法及查詢DNS用法

VB語法:

<%@ Page Language="VB"%>
<%@ Import Namespace="System.Net" %>
<%@ Import Namespace="System.Data" %>
<%@ Import NameSpace="System.Data.SqlClient" %>
<%
    Dim strCon , exeSQL As String
    Dim objCon As sqlConnection

    strCon = "Server=[IP];Database=[資料庫名稱];UID=[使用者名稱];PWD=[密碼]"
    objCon = New sqlConnection(strCon)
    objCon.Open()

    Dim sqlDataReader As SqlDataReader

    exeSQL = "SELECT TOP 1 * FROM [資料表名稱] ORDER BY [欄位名稱] DESC"
    sqlDataReader = (New sqlCommand(exeSQL, objCon)).ExecuteReader()

    Dim hostInfo As IPHostEntry
    Dim getIPAddress As IPAddress
    Dim IP, DNS

    If sqlDataReader.Read() Then
        IP = sqlDataReader.Item("IP")
        getIPAddress = IPAddress.Parse(Trim(IP.ToString()))  
        '由於欄位中的IP最後有個空格,所以多一個Trim的動作
        hostInfo = System.Net.Dns.GetHostByAddress((getIPAddress.Address).ToString())          
        '就是這個奇怪的Dns.GetHostByAddress(),裡面傳的參數明明寫著IPAddress就可以,
        '可是我直接傳getIPAddress會錯,這奇怪的寫法也是我花了很久才找出來的
        DNS = hostInfo.HostName
       
        '一般網路上查到的用法如下,有測試成功請告訴我
        'getIPAddress = IPAddress.Parse(IPString)
        'hostInfo = Dns.GetHostByAddress(getIPAddress)


        '另外在已知IP的情況可以用下面的例子
        'hostInfo = Dns.GetHostByAddress("168.192.0.1") 
       

        Response.Write(IP & "<br>")
        Response.Write(DNS & "<br>")
    End If
   
    sqlDataReader.close()
    objCon.Close()
%>

 


C#語法:

 

using System;
using System.Data;
using System.Data.SqlClient;
using System.Net;

public partial class _Default: System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        try
        {
            String strCon = "Data Source=[IP];Initial Catalog=[資料庫名稱];Persist Security Info=True;User ID=[使用者];Password=[密碼]";
            SqlConnection myConn = new SqlConnection(strCon);
            myConn.Open();

            String exeSQL = "SELECT TOP 1 * FROM [資料表名稱] ORDER BY [欄位名稱] DESC";
            SqlDataReader myReader = null;
            SqlCommand myCommand = new SqlCommand(exeSQL, myConn);
            myReader = myCommand.ExecuteReader();

            String IP, DNS;
            IPHostEntry hostInfo;
            IPAddress getIPAddress;
            while (myReader.Read())
            {
                IP = myReader["IP"].ToString();
                getIPAddress = IPAddress.Parse(IP.Trim());
                hostInfo = Dns.GetHostByAddress((getIPAddress.Address).ToString());
                DNS = hostInfo.HostName;
                               
                Response.Write(IP + "<br>");
                Response.Write(DNS + "<br>");                               
            }
            myReader.Close();
            myConn.Close();
       
        }
        catch (System.Exception ex)
        {
            Response.Write(ex.ToString());
        }
    }
}

arrow
arrow
    全站熱搜

    soarlin 發表在 痞客邦 留言(0) 人氣()