已經按照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());
}
}
}