作者one164 (阿MON)
看板C_Sharp
標題[問題] 更換密碼語法的小問題
時間Sat Sep 12 04:42:37 2009
小弟現在做到會員的部份
可是寫了更換密碼的語法碰到了瓶頸
以下是小弟寫的部份副程式語法
protected long checkUser(string tbuser, string tbpass)
{
string strSQL = null;
long userID = 0;
// 檢查使用者名稱和密碼是否正確且經過啟動
strSQL = "SELECT Acc_id FROM MemberInformation WHERE ";
strSQL += "Acc_id = '" + tbuser + "' AND Acc_password = '" + tbpass +
"' AND ValidatedUser=true";
// 建立Connection物件
string connStr = "data source=localhost;user
id=sa;password=123456;initial catalog=SDDB";
SqlConnection conn = new SqlConnection(connStr);
conn.Open();
// 開啟資料庫連結
// 建立Command物件的SQL指令
SqlCommand sqlcmd = new SqlCommand(strSQL, conn);
// 使用ExecuteScalar執行SQL指令
userID = sqlcmd.ExecuteScalar();
conn.Close();
return userID;
}
偵錯時會跑出錯誤
型別 'object' 不能隱含轉換為 'long'。已有明確轉換存在 (您是否漏掉了轉型?)
userID = sqlcmd.ExecuteScalar();(是錯在這一行)
小弟有試過很多方法去改型別可是也沒辦法
有前輩能教小弟這裡的錯誤改怎麼辦嗎?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.136.120.228
1F:→ evirtues:userID=Convert.ToInt64(sqlcmd.ExecuteScalar()); ?? 09/12 12:31
2F:推 taicomjp:userID = (Int64)sqlcmd.ExecuteScalar(); 09/12 13:13
3F:→ one164:我竟然忘記最原本的方法了 一直在改上面userID的型別 囧 09/12 14:00
4F:→ one164:感謝樓上兩位前輩指導! 09/12 14:01
5F:推 tomex:btw,你的寫法會有sql injection安全問題。 09/15 16:43
6F:推 horngsh:hint:改用SqlParameter class就不會有tomex說的問題 09/20 01:50