首页 新闻 赞助 找找看

sql这个可不可以去掉加号

0
悬赏园豆:5 [已解决问题] 解决于 2012-06-12 19:06

strSQL = "SELECT * FROM users WHERE (name = '" + userName + "') and (pw = '"+ passWord +"');"

不可以写成:

strSQL = "SELECT * FROM users WHERE (name = '" userName  "') and (pw = '"passWord"');"

 

 

可不可以去掉加号??

K战神的主页 K战神 | 初学一级 | 园豆:93
提问于:2012-06-10 16:51
< >
分享
最佳答案
0

不可以。

这里的“+”是组装字符串的一个行为,这里的字符串组成部分中有几个是来自别的地方(变量),所以必须保持,除非你使用替代方案(荒野的呼唤说的使用格式化处理)。

另外,如果你想真的去掉,也可以,那就用另外的方案,把SQL写成:

strSQL = "SELECT * FROM users WHERE (name = @userName) and (pw = @passWord);"

这样,你就必须通过SQLPARAMETER的方式,把USERNAME和PASSWORD的具体内容传递进去。

建议你使用参数的方式,因为这样安全,避免了SQL注入(什么是SQL注入,你可以百度搜索一下)的危险。

收获园豆:2
无之无 | 大侠五级 |园豆:5095 | 2012-06-10 21:11

我知道参数化查询,上面是我最开始看到的一个,有点小疑问。就问问。

还有:

 strSQL = "SELECT * FROM users WHERE Name = @Name and Password = @Password";
 SqlParamter[] paras = new SqlParamter[]

{//参数数组
      new SqlParamter("@Name",SqlDBType.Varchar,50)
    new SqlParamter("@Password",SqlDBType.Varchar,50)};
5 paras[0].value = userName;//绑定用户名
6 paras[1].value = password;//绑定用户密码

 

 new SqlParamter("@Name",SqlDBType.Varchar,50)这个怎么理解??

K战神 | 园豆:93 (初学一级) | 2012-06-10 21:30

@战神@冰王子: 

SqlDBType.Varchar:是说这个绑定的参数类型对应于SQL里的VARCHAR

50:既然知道了Varchar的意思,这个知道了吧?长度。

 

当你new Sqlparameter(...)的时候,你会看到提示的。

无之无 | 园豆:5095 (大侠五级) | 2012-06-11 08:05
其他回答(3)
0

可以用string.Format()。

收获园豆:1
悟行 | 园豆:12559 (专家六级) | 2012-06-10 18:04
0

  string sql = string.Format("select a.[YsKinds],a.[bzr] ,b.name from tableA as a left join tableB as b on a.yskinds = b.id where [bianhao] =@bianhao and [category] =@category order by b.id ASC");
            SqlParameter[] para = new SqlParameter[]
    {
                    new SqlParameter("@bianhao",SqlDbType.Int,4),
                    new SqlParameter("@category",SqlDbType.Int,4)
                };
            int i = 0;
            para[i++].Value = Id;
            para[i++].Value = Category;

用参数化的SQL

收获园豆:1
happydaily | 园豆:301 (菜鸟二级) | 2012-06-10 18:06
0

刚才在sql2008中试了一下,都可以的,我个人觉得加上+号是为了保持语句的连贯吧,在其他语句中参数也都是用+号来拼接的

收获园豆:1
FuSheng2012 | 园豆:209 (菜鸟二级) | 2012-06-10 18:10
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册