簡體   English   中英

我無法將SQL Select Query Result轉換為Bit

[英]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 ,除了它應該轉換為boolbit 所以它應該是這樣的:

if(!Convert.ToBoolean(drlogin[0]))

要么

if(!Convert.ToBoolean(drlogin["isactive"]))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM