黑马程序员技术交流社区

标题: ADO中的疑惑 [打印本页]

作者: 苏波    时间: 2013-1-16 14:51
标题: ADO中的疑惑
cmd.CommandText = "select *from T_Users where UserName='" + username + "'";请问这条语句是什么意思 ,求详细解释,为什么用 +以及'   “’”又是什么意思前面的都懂就是='" + username + "'";从这里开始不明白是什么意思了 求详细解释
作者: 许庭洲    时间: 2013-1-16 15:40
1. CommandText属性为要执行的SQL语句;
2.例如:
SqlConnection conn = new SqlConnection(“server=.;uid=sa;pwd=sa;database=MYDB”);
SqlCommand cmd = conn.CreateCommand();
cmd.CommandText = "select *from T_Users where UserName=' " + username + " ' ";//UserName在数据库中定义的是一个varchar型的,而对字符型进行条件查询的时候是要加''号的,而加号用于字符拼接 。
Con.Open();
SqlDataReader sr = cmd.ExecuteQuery();
While(sr.Read())
{
      ......
}
Conn.Close();


作者: 黑马刘俊    时间: 2013-1-18 12:22
可以参考这个语句的解释

cmd.CommandText = "insert into T_Users1(UserName,Password) values ('"+username+"','"+password+ "')";

分解下理解比较好

首先  cmd.CommandText = "                                      "   表示命令对象所要在执行的sql语句,这个sql语句是通过字符串参数赋给CommandText属性的。

假设username = 'aaa',password = 'bbb'

那么实际上我们执行的sql语句是   insert into T_Users1(UserName,Password) values ('aaa','bbb')

下面通过字符串连接来构造这条语句

insert into T_Users1(UserName,Password) values ( '  '  '    =    insert into T_Users1(UserName,Password) values ('

+username                                                     =     insert into T_Users1(UserName,Password) values ('username

+"    ','      "                                            =     insert into T_Users1(UserName,Password) values ('username','

+password                                                     =     insert into T_Users1(UserName,Password) values ('username','password

+ "  ')   "                                                =      insert into T_Users1(UserName,Password) values ('username','password')

我是这样理解的,把',' 当成一个字符串,不要理解为用单引号包裹了一个逗号,实际上我不知道这样写行不行,如果需要使用字符串连接来构造sql语句,最好写成这样,不要嵌套使用单双引号,容易犯错,而且很难找到错误

cmd.CommandText = "insert into T_Users1(UserName,Password) values ( "   +    "  '  "   +  " ,"  + "  ' " + password + " ' " + " ) "

不过最好推荐用string.format()函数来构造比较容易看懂,或者参数化查询也行。
作者: 乔培培    时间: 2013-1-18 13:26
这是一句拼接字符串的代码
两个字符串相加就是 “”  =  “” + “” 右边的两个字符串加起来,也就是连接为一个字符串;
三个字符相加就是 “” = “” + “” + “”
至于单引号则表示username为字符串类型,这样在执行Sql语句的时候,Sql Server才知道,如果是字符串类型,比如你代码中username就是,不加单引号就会报错,如果是数字类型就不需要加单引号,其它类型一般就要加





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2