日期:2014-05-16  浏览次数:20653 次

求助 关于用C#将一个表拆成几个子表,并处理数据的问题
刚开始接触SQL。需要处理一个表的数据,通过一列(Cell)的不同值,将这个表的数据分别做不同的处理。比如说这一列的数据是1,1,1,1,2,2,2,则是1的进行一种处理。2的进行另一种处理。表中每一个数据都要用到。我开始的处理方法是先将Cell列的数据提取出来,
C# code
 //获得Cell列不同的值
            SqlCommand cmd = new SqlCommand();
            cmd.Connection = m_SqlConn;
            cmd.CommandText = "select distinct Cell from " + sTableName;

            cmd.CommandType = CommandType.Text;

            SqlDataAdapter sda = new SqlDataAdapter();
            sda.SelectCommand = cmd;
            DataSet ds = new DataSet();
            sda.Fill(ds, sTableName);


然后得到不同的Cell值的个数
C# code
int nDiffCellValueCount = ds.Tables[sTableName].Rows.Count;


对每个Cell值再得到一次DataSet,
C# code
 //得到相同的Cell值的表
            for (int i = 0; i < nDiffCellValueCount; i++ )
            {
                SqlCommand cmd1 = new SqlCommand();
                cmd1.Connection = m_SqlConn;
                cmd1.CommandText = "select * from Cell where Cell = " + ds.Tables[0].Rows[i][0].ToString();

                cmd1.CommandType = CommandType.Text;

                SqlDataAdapter sda1 = new SqlDataAdapter();
                sda1.SelectCommand = cmd;
                //记录下该DataSet对应的Cell值
                _DataValue ds1 = new _DataValue(Convert.ToUInt64(ds.Tables[0].Rows[i][0]));
                sda.Fill(ds1._DataSet, sTableName);

                DataBaseValueAL.Add(ds1);
            }


结果在for循环的时候把数据库服务器弄挂了,请问该怎么做啊?现在都不敢随便试了



------解决方案--------------------
for循环的时候把数据库服务器弄挂了...
死循环了吧
------解决方案--------------------
sda.Fill(ds1._DataSet, sTableName);
肯定 是这块有问题。
你这样select,效率实在太低啊。
每行都select......