一个如下表,主键是id ;然后url,存着网站的网址;然后是rank,存放该网站在alexa排名的名次。 我想用datareader来取得每行数据的url值,再用一个自定义的类取得该行url网址现在的rank值,再执行updata语句,更新回数据库,该怎么做阿。string source1 = "server=localhost;uid=sa;pwd=sa;database=123";
SqlConnection conn1 = new SqlConnection(source1);
conn1.Open();
string select1 = "select * from news";
SqlCommand cmd1 = new SqlCommand(select1,conn1);
SqlDataReader dreader = cmd1.ExecuteReader();while(dreader.Read())
{
    string url = (string)dreader["url"];
    /*
    在这里根据上面得到的url值,通过一个自定义类得到了该url网址在alexa的排名
    
    然后怎么把这个值更新回该行呢?
    */ 
}
conn1.Close();还是说datareader不能用来更新,刚刚开始接触ado.net请大家教我

解决方案 »

  1.   

    datareader 顾名思义是用来读数据的,更新数据库用sqlcommand或dataset
      

  2.   

    写着是一个 reader 嘛 怎么可能用来更新的
    想更新的话用 IDbCommand
      

  3.   

    DataReader不能更新数据库啊
    用DataSet
      

  4.   

    用DataSet吧,用法反正都是差不多的。
      

  5.   

    string url
    while(dreader.Read())
    {
        url = (string)dreader["url"];
        
    }
    dreader.close();
    conn1.Close();
    string upstr="Update tb set alexa='"+ alexa值+"' where url='"+ url +"'"
    SqlCommand com=new SqlComand(upstr,conn1)
    com.ExcutNoQuery();
    手写的, 可能拼写有错 你自己改
      

  6.   

    知道了哪位给个例子,历遍全部行,读出每一行数据,再根据这个数据得到新值更新回该行的 dataset 的代码
      

  7.   

    to chx_xuxu(xuxu)这个肯定不行。历遍datareader是在while循环内阿没有用过dataset,谁帮找个类似的代码既能遍历全部行,还能在遍历的同时更新数据
      

  8.   

    string strConString = "server=localhost;uid=sa;pwd=sa;database=123";
    SqlConnection objCon = new SqlConnection(strConString);
    objCon.Open();
    string strsql = "select * from news";
    SqlDataAdapter objAccess = new SqlDataAdapter(strsql,objCon);

    DataTable tblSource = new DataTable();
    objAccess.Fill(tblSource);System.Text.StringBuilder sb = new System.Text.StringBuilder();foreach(DataRow row in tblSource.Rows)
    {
    sb.Append("update news set rand='"+YourFunctionToGetRank(row["url"].ToString())+
    "' where id="+row["id"].ToString()+"\n";
    }

    //更新到数据库中去
    SqlCommand objCmd = new SqlCommand(sb.ToString(),objCon);
    objCmd.ExecuteNonQuery();
    objCon.Close();============================================
    这个够清楚了吧