我的活动中有以下代码btn_click
:
Sqlconnection con = new Sqlconnection("server=.;database=bss;user id=ab;pwd=ab"); con.open(); SqlCommand cmd = new Sqlcommand("select * from login where username='" + txt4name.Text + "' and pwd='" + txt4pwd.Text + "'", con); SqlDataReader reader = cmd.execute Reader();
login
桌子在哪里username
,pwd
是它的领域.在此代码之后,所有值都存储在reader
对象中.我想存储username
和pwd
单独的变量.
我怎么能做到这一点?
通常,在访问数据库时,您应该使用与此类似的东西来消除SQL注入漏洞:
using (SqlCommand myCommand = new SqlCommand("SELECT * FROM USERS WHERE USERNAME=@username AND PASSWORD=HASHBYTES('SHA1', @password)", myConnection)) { myCommand.Parameters.AddWithValue("@username", user); myCommand.Parameters.AddWithValue("@password", pass); myConnection.Open(); SqlDataReader myReader = myCommand.ExecuteReader()) ................... }
但更真实地存储凭据,您应该使用诸如Membership系统之类的东西,而不是滚动自己的.
你正在冒着sql注入的巨大风险. 将SQL参数用于SqlCommands中的值.