这是一个向sql数据库插入数据的问题~
String insertcmd ="insert into score(姓名,数学,语文,总分,平均分) valuse(@name,@math,@english,@math+@english,(@math+@english)/2)"
sqlcommand mycommand = new (insertcmd,mycon);
mycommand.Parameters.add(New sqlparameter("@name",SqlDbType.NVarchar,10));
mycommand.Parameters("@name").value = s_name.value;(s_name是<input type=text id=s_name runat="server")的id值这就是我的问题所在,为什么要用到Parameters集合呢,然后还要对value属性赋值,为什么不直接就用s_name插入呢
就像这样.
insertcmd="insert into score(姓名,数学,语文,总分,平均分) values (S_name.text)......."

解决方案 »

  1.   

    他不会在你的字符串里进行替换的,除非用@标记出要他替换的东西。如果不做标记他就不知道你的S_name是要替换还是你本来就是这样子的
      

  2.   

    用@name参数就要添加Parameters,不用Parameters就可直接用S_name.text
      

  3.   

    我看到很一些书上介绍的都是用的parameters,难道这样很好吗?好在那里呢?
    为什么不直接用s_name.text呢?
      

  4.   

    简单的程序就像你说的
    直接就用s_name插入呢如果程序做大了
    一般要用到存储过程
    这时候就要用到Parameters
    而且用Parameters会防止别人利用漏洞来修改数据库好比你说的
    s_name是 <input type=text id=s_name runat="server")的id值 
    如果用户输入以下内容
    内容')delete from score--你的数据库增加代码本来是insert into score(列名) values ('内容')
    用户输入上面内容就变为
    insert into score(列名) values ('内容')delete from score--')
    执行了两条语句,一条是添加,一条是删除数据库内容  --后面的就会被当作是注释
    如果用Parameters参数就会把内容')delete from score--这一整句写入数据库
    反正很有用处就是了