程序功能:读数据表里某个字段为UnBack的数据,针对每一行数据,调用函数,将另一个字段的值发给对方,调用后将该字段值UnBack更新为BackSuccess,
想法有两个
1 通过datareader读数据,在read中循环调用函数,然后再执行更新的sqlcmd2通过dataadapter,将表填充到dataset的table中,建立循环调用函数,然后用adaper.update更新代码如下
 try
                    {
                        SqlConnection RecordTableconn = new SqlConnection(@"Data Source=.\SQLExpress;Integrated Security=True;Database=RecordDataBase");
                        RecordTableconn.Open();//打开连接
                        string sql = "SELECT * FROM RecordTable WHERE BackRecord = '" + bdReturn.Ub + "' or BackRecord = '" + bdReturn.Bf + "'";//定义sql语句字符串:选择记录表中字段RecordStatus为Savesuccess的数据
                        //SqlDataAdapter recordAdapter = new SqlDataAdapter(sql, RecordTableconn);//建立DataAdapter
                        //DataSet recordDataset = new DataSet();//建立DataSet
                        //recordAdapter.Fill(recordDataset, "table");//adapter选中的数据填充到recordDataset中的table中
                        //int i = 0;
                        //for (i = 0; i < recordDataset.Tables["table"].Rows.Count; i++)
                        //{
                        //    IPAddress ip = IPAddress.Parse(recordDataset.Tables["table"].Rows[i]["IPSource"].ToString());
                        //    int port = (int)recordDataset.Tables["table"].Rows[i]["port"];
                        //    int id = -(int)recordDataset.Tables["table"].Rows[i]["SendId"];
                        //    backConnect(ip, port, id);//调用函数backConnect
                        //    recordDataset.Tables["table"].Rows[i]["BackRecord"] = bdReturn.Bs;
                        //    recordDataset.Tables["table"].Rows[i]["BackTime"] = DateTime.Now;
                        //    recordAdapter.Update(recordDataset, "table");
                        //}
                        
                        //RecordTableconn.Close();//关闭数据库连接
                        SqlCommand cmd = new SqlCommand(sql, RecordTableconn);//建立cmd
                        SqlDataReader recordReader = cmd.ExecuteReader();//建立dataReader
                        if (recordReader.HasRows)//reader中有数据
                        {
                          while (recordReader.Read())//循环读取
                        {
                          IPAddress ip = IPAddress.Parse(recordReader["IPSource"].ToString());
                               int port = (int)recordReader["Port"];
                               int id = -(int)recordReader["SendId"];
                               backConnect(ip, port, id);//调用函数dbOperation
                               recordReader.Close();//关闭dataReader
                               string sqlupdate = "UPDATE RecordTable SET BackTime ='" + DateTime.Now.ToString() + "' ,BackRecord='" + bdReturn.Bs + "'";
                               SqlCommand cmdupdate = new SqlCommand(sqlupdate, RecordTableconn);
                               cmdupdate.ExecuteNonQuery();
                           }
                        }
                        //recordReader.Close();//关闭dataReader
                        RecordTableconn.Close();//关闭数据库连接                        formReturn.listboxReturn.Items.Add("返回成功!");
                        formReturn.listboxReturn.TopIndex = formReturn.listboxReturn.Items.Count - 1;//顶端显示最后一行
                    }                    catch
                    {
                        formReturn.listboxReturn.Items.Add("返回失败!");
                        formReturn.listboxReturn.TopIndex = formReturn.listboxReturn.Items.Count - 1;//顶端显示最后一行
                        Thread.Sleep(10000);
                    }其中被标记为注释的部分 为dataadapter方法,但是试验时提示 更新方法不对
未标记的那段 为datareader 试验时在执行更新的sqlcmd时 提示reader要关闭 ,但是关闭reader后还是有问题
问:使用哪种方法更合理?怎么修改来解决上述问题。
ps:还有更好的办法吗?这两个是我自己想的。datareader adapterSQL