关于访问SQL SERVER返回表的行数的问题?

tree_ch 2009-03-17 01:52:05
string sqlConfig=@"Data Source=localhost;Initial Catalog=DB1;Userid=sa;Password=11";
DataSet ds = new DataSet();

SqlConnection sqlCon = new SqlConnection(sqlConfig);
string sql1 = "select * from TB1";

SqlDataAdapter sqlAd = new SqlDataAdapter();
sqlAd = new SqlDataAdapter(sql1, sqlCon);
sqlAd.Fill(ds, "TB1");

DataTable tb1 = ds.Tables["TB1"];
int lCount;
lCount = tb1.Rows.Count;

**************************************************************
Rows.Count 的类型是int,不少入门书籍基本将INT定义为2个字节。现在机器基本都是32位以上的,Count的值可以支持比较大,约为2的31次方。我所定义的TB1约有8万多条记录,以水晶报表的形式显示出来。
如果是16位机呢?只有2的15次方,就3万多。难道当时的机器只能返回3万多条记录吗?如果是上百万或者更多记录的表怎么办?
...全文
360 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
tree_ch 2009-04-21
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 yingzhilian2008 的回复:]
select count(*)...不就行了,为什么一定通过表的行数!
[/Quote]

简单点说来,我的意思就是,如果表的行数超过 tb1.Rows.Count 怎么办?
yingzhilian2008 2009-04-16
  • 打赏
  • 举报
回复
select count(*)...不就行了,为什么一定通过表的行数!
lvveve 2009-03-18
  • 打赏
  • 举报
回复
没搞懂你说的什么
jie3614 2009-03-17
  • 打赏
  • 举报
回复
直接用string sql1 = "SELECT COUNT(*) FROM TB1";

int是Int32 值类型 占用4字节 最大值是 2147483647 分配在线程的堆栈(stack)上

跟你的机器是16位机、32位机还是64位机无关。
zzxap 2009-03-17
  • 打赏
  • 举报
回复
select count(1) from where ..
深海之蓝 2009-03-17
  • 打赏
  • 举报
回复
16位机当时还没有这个方法:)
skison 2009-03-17
  • 打赏
  • 举报
回复
如同你在现在的机器上查超 int.Maxnum
tree_ch 2009-03-17
  • 打赏
  • 举报
回复
关键是如果int是2个字节,那么COUNT最多是32676,一个数据表超过4万条数据很正常吧?那么它要怎么返回呢?
周公 2009-03-17
  • 打赏
  • 举报
回复
另外,在.net中数据类型是与平台无关的,byte占用1字节,short和char占用两字节,int,float占用4字节,double,long占用8字节,不管你是在16位、32位还是64位的机器上。
周公 2009-03-17
  • 打赏
  • 举报
回复
求数据库中记录条数的代码:

//实例化Connection对象
SqlConnection connection = new SqlConnection("Data Source=(local);Initial Catalog=AspNetStudy;Persist Security Info=True;User ID=sa;Password=sa");
//实例化Command对象
SqlCommand command = new SqlCommand("select count(1) as 男性人数 from UserInfo where sex=1", connection);
//打开Connection对象
connection.Open();
//执行SQL语句
int count = int.Parse(command.ExecuteScalar().ToString());
//关闭Connection对象
connection.Close();
周公 2009-03-17
  • 打赏
  • 举报
回复
会把机器拖垮的。
看看这个:
asp.net夜话之七:ADO.NET介绍
ADO.NET是对Microsoft ActiveX Data Objects (ADO)一个跨时代的改进,它提供了平台互用性和可伸缩的数据访问。由于传送的数据都是XML格式的,因此任何能够读取XML格式的应用程序都可以进行数据处理。事实上,接受数据的组件不一定要是ADO .NET组件,它可以是基于一个Microsoft Visual Studio的解决方案,也可以是任何运行在其它平台上的任何应用程序。以前做数据库访问的时候,需要一直与数据库保持连接,直到获取完所有满足需要的数据之后才会断开数据库连接,这种数据库访问方式称之为连接式数据访问技术。相比于以前的连接式数据访问技术,ADO.NET除了提供连接式数据访问技术之外,还提供了另一种断开式解决方案,那就是在内存中模拟一个数据库,也就是内存中的数据库。我们知道在实际的数据库技术中,每个数据库就是一个业务逻辑单元,一般来说这个数据库包含了实现一个应用软件或者一个网站所需要的全部数据。
zgke 2009-03-17
  • 打赏
  • 举报
回复
int 是Int32 不是根据你机器变而变的..
还有你还能找到16位机?
skison 2009-03-17
  • 打赏
  • 举报
回复
那时的机器跑不动一次 select * 上百万数据的

没必要

就是现在的机器,你要select * >100w?

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧