private const string SQL_INSERT_USER = "INSERT INTO Users(UserName, Password, Email, Question, Answer, CreateDate, LastLoginDate) VALUES(@UserName, @Password, @Email, @Question, @Answer, @CreateDate, @LastLoginDate)";            using (SqlDataReader sdr = SqlHelper.ExecuteReader(SqlHelper.ConnString, CommandType.Text, SQL_SELECT_USER, null))上边这两条语句麻烦详细解释一下!

解决方案 »

  1.   


    private const string SQL_INSERT_USER = "INSERT INTO Users(UserName, Password, Email, Question, Answer, CreateDate, LastLoginDate) VALUES(@UserName, @Password, @Email, @Question, @Answer, @CreateDate, @LastLoginDate)"; //构造一条Sql语句            using (SqlDataReader sdr = SqlHelper.ExecuteReader(SqlHelper.ConnString, CommandType.Text, SQL_SELECT_USER, null)) //调用SqlHepler里面的ExecuteReader方法返回数据阅读器
      

  2.   


    @UserName //这是变量吗?
    //using可以 using()这样用?那一部分的知识
      

  3.   

    1、第一条代码是创建一个sql语句,然后保存在一个变量中,该变量用const修饰后就不可以在程序中被修改。将要插入的数据都写成参数的形式(@UserName),这种用法在sql中很正常。如下:declare @id int, @username varchar(10)
    set @id=1
    set @username='zhangsan'
    insert into [user] values(@id,@username)2、using (SqlDataReader sdr = SqlHelper.ExecuteReader(SqlHelper.ConnString, CommandType.Text, SQL_SELECT_USER, null)) 
    {
        //在using后面括号中声明的变量sdr只能够在本{}中使用,离开{}就会被释放、关闭
    }
      

  4.   

    1 使用参数给数据库添加数据
    2 使用using(...){}其中的所有资源在使用后完会自动释放掉
      

  5.   

    5楼说的对。那种写法相对于直接把值放到SQL语句中去安全。叫防SQL注入。using指令的好处就是随时用随时释放。每个using指令声明的引用只在它的内部有效。