关于网友提出的“ ASP 当中数据库问题”问题疑问,本网通过在网上对“ ASP 当中数据库问题”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: ASP 当中数据库问题
描述: 在ASP代码数据库操纵这块
string sql = "select * from UserInfo where userName=@userName";
两个UserName 分别具体指什么呢?
解决方案1: @最好不要用在sql语言中 以免引起误解
解决方案2: 这里是sql parameter
简单的给个示例供参考
传统的查询语句的sql可能为
string sql="select * from users where user_id='"+Request.QueryString["uid"]+"'";
很显然,我们在这里拼接了字符串,这就给sql注入留下了可乘之机。
现在,我们要改写这样的语句,使用SqlParameter来做
SqlCommand SqlCmd = new SqlCommand(sql, SqlConn);
SqlParameter _userid = new SqlParameter("uid", SqlDbType.Int);
_userid.Value = Request.QueryString["u_id"];
SqlCmd.Parameters.Add(_userid);
这样,我们可以保证外接参数能被正确的转换,单引号这些危险的字符也会转义了,不会再对库造成威胁。
当然,这仅是一个示例而已,在真实的情况下,可能你还要对 Request.QueryString["u_id"]进行必要的检测与分析,这样才安全
所以,使用参数化的sql语句,是一种很好的做法
Dim sql As StringBuilder = New StringBuilder()
sql.Append("")
sql.Append("SELECT * FROM test")
sql.Append(" WHERE a= @p1 ")
Dim command As SqlCommand = dac.CreateCommand(sql.ToString()) 'dac为自己写的类
Dim param As SqlParameter = New SqlParameter()
param .ParameterName = "@p1"
param .SqlDbType = SqlDbType.NVarChar
param .Value = b 'b为该函数的参数(ByVal b as String)
command .Parameters.Add(param)
Dim reader As SqlDataReader = command.ExecuteReader()
解决方案3:
同意
解决方案4: username代表数据库中表字段名称
@username代表参数化名称|
解决方案5: userName数据库表的字段
@userName,参数化参数的名称(MSSQLServer),如果是access数据库@userName用问号代替
以上介绍了“ ASP 当中数据库问题”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/2917653.html