那是你取值的语句不对
不应该写成int i = dataSet.Tables["main"].Rows.Count;这样取到的是查询结果集中记录的条数而不是表中记录的条数。而执行string Sql="select count(*) from main";返回的结果集确实是一条记录,他的内容就是表中数据的行数,因此即使你表中有一万条记录,你那样做得到的也是1。
正确的写法应该是:
dataSet.Tables["main"].Rows[0][0].ToString();