[英]I can't Convert SQL Select Query Result to Bit
用戶注冊后; 默認情況下,用戶的成員資格被保存為“被動”。 我通過以下方式執行此操作:我的用戶表中有一個名為“active”的行,該字段的數據類型為bit,此字段的默認值為0.我想要做的是:如果用戶沒有激活他的帳戶,我希望他得到警告,但我得到System.IConvertible錯誤。 我的login.aspx.cs如下:
DataRow drlogin = function.GetDataRow("SELECT isactive FROM user WHERE email = '" + TxtEMail.Text + "'");
if(Convert.ToInt32(drlogin) == 0)
{
string message = "<script>alert('You can't login because your account is not active!');</script>";
}
else
{
// Login operations
}
首先,您應該使用參數,而不是使用參數值來修改查詢字符串。
其次,您可以轉換為您想要的類型,它似乎是一個整數:
SELECT CAST(isactive as int) as isactive
FROM user
WHERE email = '" + TxtEMail.Text + "'";
使用這個SQL而不是你的一個:
"SELECT ISNULL((SELECT isactive FROM user WHERE email = '" + TxtEMail.Text + "'),0)"
這條線是有毒的,機器人會在你發布它時立即破解你的網站:
DataRow drlogin = function.GetDataRow("SELECT isactive FROM user WHERE email = '" + TxtEMail.Text + "'");
使用參數而不是字符串連接!
您不能將DataRow
轉換為Int32
,除了它應該轉換為bool
的bit
。 所以它應該是這樣的:
if(!Convert.ToBoolean(drlogin[0]))
要么
if(!Convert.ToBoolean(drlogin["isactive"]))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.