刚开始接触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......