2011-07-04 71 views
0

我有一個存儲過程,它將幾列插入數據庫,IP地址,名稱,註釋。我不知道如何獲取用戶機器的IP地址。也許我會創建一個相同類型的變量(INT),然後將IP地址存儲在那裏。我有點迷失在這一個。ASP.Net中的IP地址參數

static int IPAddress() 
{ 
get { return Request.UserHostAddress; }; 
}//How do I pass from here into my stored procedure? 


       cmdI.Parameters.Add(new SqlParameter("@IPAddress", cmdI)); 
       cmdI.Parameters.Add(new SqlParameter("@Name", cmdI)); 
       cmdI.Parameters.Add(new SqlParameter("@Comments", cmdI)); 
+0

UserHostAddress是一個字符串。數據庫中IPAddress的數據是什麼? –

+0

我把它聲明爲int – jpavlov

+1

IPv6怎麼樣?請參閱[在支持IPv6的環境中返回IPv4地址](http://www.4guysfromrolla.com/articles/071807-1.aspx) –

回答

1

您需要將IP地址從一個字符串轉換成int;請參閱How to convert an IPv4 address into a integer in C#?

但是,我會更改數據庫來將IP地址存儲爲字符串。這樣您將支持IPv6。

+0

在我的數據庫中IP顯示爲無格式? 16777343 – jpavlov

+0

那是因爲你正在將它們存儲爲'int'。 –

+0

我將數據庫轉換爲nvarchar(50),並仍然得到它 – jpavlov

-1

IP地址的確是一個32位爲int的表示,並且可以存儲在DB這樣

+0

您能舉一個例子嗎? – jpavlov

+1

看看這裏:http://stackoverflow.com/questions/461742/how-to-convert-an-ipv4-address-into-a-integer-in-c – Variant

+1

-1:除非它是IPv6? –