datagrid与dataset1捆绑,在datagrid的Update()对数据库的更新中,我定义了自己的InsertCommand1:
InsertCommand1.CommandText="insert into table_user (user,passwd) values (?,?);
InsertCommand1.Parameters.Add("user",System.Data.OleDb.OleDbType.VarChar,8,"user");
InsertCommand1.Parameters.Add("passwd",OleDbType.VarBinary,16);InsertCommand1.Parameters["passwd"].Value=这个值是user的md5加密,我已经写好,叫mymd5(string txt);
问题是现在=的右边怎么写??
InsertCommand1.Parameters["passwd"].Value=mymd5("user");这个mymd5("user")中的user是不是dataset中新增那些行的源列呢???

解决方案 »

  1.   

    不行啊,这样密码都成了字符串:usrid 了
    超难的题目啊 ~~~
      

  2.   

    InsertCommand1.Parameters["User"].Value= ****
    InsertCommand1.Parameters["passwd"].Value=mymd5(InsertCommand1.Parameters["User"].Value);
      

  3.   

    不知,但sqlserver中不能用?作为占位符的吧好像要用@开头的东西才行。
      

  4.   

    SqlServer and Access : InsertCommand1.CommandText="insert into table_user (user,passwd) values (@user,@passwd);
    InsertCommand1.Parameters.Add("@user",System.Data.OleDb.OleDbType.VarChar,8,"user");
    InsertCommand1.Parameters.Add("@passwd",OleDbType.VarBinary,16);Oracle:
     InsertCommand1.CommandText="insert into table_user (user,passwd) values (:user,:passwd);
    InsertCommand1.Parameters.Add("user",System.Data.OleDb.OleDbType.VarChar,8,"user");
    InsertCommand1.Parameters.Add("passwd",OleDbType.VarBinary,16);
      

  5.   

    InsertCommand1.Parameters["passwd"].Value=user的加密怎么写到密码段中去了?右边就写字符串好了,如果是加密后的就写加密后的字符串。反正比较的时候也是加密后再跟数据库中的进行比较
      

  6.   

    谢谢各位大哥问题是datagrid的数据源是dataset,我在datagrid上加入一行行的user,按"确定"一次性提交,数据库里就直接加入user,passwd行。其中的passwd=mymd5(user)。对于单条的命令来说是没有问题的。现在是列的关系啊。
    C#的Update()函数就执行一次呀,没法用for循环之类。
      

  7.   

    不用value,把你的数据先写到dataset中,然后使用SourceColumn来指定字段
    InsertCommand1.Parameters["passwd"].SourceCulumn="passwd";
      

  8.   

    在表达式中那可不可以引用某个源列呢???我觉得这样的功能应该具备的呀,比如输入列a=1,插到数据表的字段b=a+1
      

  9.   

    charles_y(难得糊涂) ,那我先在Update(dataset,"表名")前先对dataset的passwd列进行赋值。我怎么实现对那些新增行做md5(),而非新增的passwd不变呢?
    是不是要用
     for语句对每行的DataViewRowState进行判断,然后在for里 把passwd=md5(userid)呢?
    dataview里怎么对两个字段进行操作呢??而且整个表很大,for的话要把整个表(无论老的记录,新增记录)都找一遍了。
      

  10.   

    还是用for找了整个dataset的currentrows先算好源列再调用Update()找新增行并填充源列的源码
    DataView dv2= new DataView(ds.Tables["ra_usr"], "", "usrnm,briddept", DataViewRowState.Added);
    foreach( DataRowView drv2 in dv2)
    {
    drv2["passwd"] = Pub.MD5Pwd(drv2["usrid"].ToString().Trim()) ;
    if ( drv2["briddept"].ToString().Trim().Length!=0)
    {
    drv2["brid"]=drv2["briddept"].ToString().Trim().Substring(0,4);
    drv2["dept"]=drv2["briddept"].ToString().Trim().Substring(4,2);
    }
    }谢谢各位老大帮忙.   :)