ADO.NET,数据库N万条数据操作
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ADO.NET,数据库N万条数据操作相关的知识,希望对你有一定的参考价值。
数据库表里存有上万的记录,15以上的字段 我要把他们取出来,然后判断其中一个字段分别绑定到不同的图片上,然后输出到界面的LISTVIEW控件上。别说上万了,2千加载的慢的吓人 上万崩溃,一下是我代码:
string Sql = "select * from 表名";
dr = SqlHelper.ExecuteReader(SqlHelper.ConnectionStringLocalTransaction, CommandType.Text, Sql, null);
while (dr.Read())
zt =dr["字段"].ToString().Trim();
AddItems(zt);
dr.Close();
dr.Dispose();
private void AddItems(string Rzt)
if (Rzt == "****")
this.lvDesk.Items.Add(dr["RoomName"].ToString(), 1);
if (Rzt == "****")
this.lvDesk.Items.Add(dr["RoomName"].ToString(), 1);
if (Rzt == "****")
this.lvDesk.Items.Add(dr["RoomName"].ToString(), 1);
if (Rzt == "****")
this.lvDesk.Items.Add(dr["RoomName"].ToString(), 1);
if (Rzt == "****")
this.lvDesk.Items.Add(dr["RoomName"].ToString(), 1);
if (Rzt == "****")
this.lvDesk.Items.Add(dr["RoomName"].ToString(), 1);
else
this.lvDesk.Items.Add(dr["RoomName"].ToString(), 0);
大概就是这样,怎么优化????
第二,没有什么机器能一次性读取海量数据而耗时很少。
第三,处理海量数据的时候,一般都是使用存储过程把大量数据分页,
每次仅仅提取其中的10几条或者20几条记录,这样才能控制在毫秒以内的响应时间。 参考技术A 1.在SQL语句中,指定字段名,看你的程序用到了RoomName字段,就只指定该字段,避免使用"*"将所有字段值返回到程序.
2.如果是页面的展示,一般可以采用分页的方式,每次处理100条左右的记录进行处理,避免将所有记录一次性返回到客户端.
3.对该表的字段建立索引. 参考技术B *不可取
使用ADO.NET查询和操作数据
1、StringBuilder类——定义可变字符串
做到既重复修改,又不创建新的对象(与String类的区别)
常用方法:
- 1) Append()在结尾追加
- 2) Insert()在指定位置插入指定字符串
- 3) Remove()移除指定字符串
2、DataReader对象——用于读取数据库中的数据
DataReader 的主要成员:
3、使用 DataReader 检索数据的步骤:
- 创建 Command 对象
- 调用 ExecuteReader() 创建 DataReader 对象
- 使用 DataReader 的 Read() 方法逐行读取数据
- 读取某列的数据,(type)dataReader[ ] 注:获取某列的值:方法一:指定列的索引,从0开始 方法二:指定列名
- 关闭 DataReader 对象:注意:DataReader 使用后必须关闭
4、更新数据
ataReader对象只能为应用程序提供数据库的查询数据,如何实现数据库数据的增加、
删除和修改操作呢?需要调用Command对象的ExecuteNonQuery()方法。
使用 ExecuteNonQuery() 的步骤小结:
- 1、创建 Connection 对象
- 2、定义sql 语句
- 3、创建 Command 对象
- 4、执行 ExecuteNonQuery() 方法
- 5、根据返回的结果进行处理
注:使用ExecuteNonQuery() 方法返回的是受SQL语句影响的记录行数。如果返回值小于或等于0,说明没有记录受影响。
5、ADO.NET总结
在对数据源执行操作时,可能会执行数据更新(增删改)操作或查询操作。对于查询操
作可能存在两种情况:一是查询获得单个值,二是查询获得若干条记录。
查询单个值
需要使用Command对象的ExecuteScalar()方法,步骤如下。
(1)创建Connection对象。
(2)拼写SQL查询语句。
(3)使用SQL语句和Connection对象创建Command对象。
(4)打开数据库连接,调用Connection对象的Open()方法。
(5)调用Command对象的ExecuteScalar()方法,返回一个标量值。
(6)操作完成后关闭数据库连接,调用Connection对象的Close()方法。
查询若干条记录
需要使用Command对象的ExecuteReader()方法,步骤如下。
(1)创建Connection对象。
(2)拼写SQL查询语句。
(3)使用SQL语句和Connection对象创建Command对象。
(4)打开数据库连接,调用Connection对象的Open()方法。
(5)调用Command对象的ExecuteReader()方法,返回一个DataReader对象。
(6)在循环中调用DataReader对象的Read()方法,逐行读取记录。如果读到记录则返回true,否则返回false。
(7)使用(type)dataReader[列名或索引]的方式读取这一行中某一列的值。
(8)调用DataReader对象的Close()方法,关闭DataReader对象。
(9)操作完成后关闭数据库连接,调用Connection对象的Close()方法。
数据更新操作
对数据库执行数据更新操作时(包括增加、修改、删除数据)都使用Command对象的
ExecuteNonQuery()方法,步骤如卞。
(1)创建Connection对象。
(2)拼写SQL增删改语句。
(3)使用SQL语句和Connection对象创建Command对象。
(4)打开数据库连接,调用Connection对象的Open()方法。
(5)调用Command对象的ExecuteN0nouery()方法执行命令,返回数据库中受影响的
行数。
(6)操作完成后关闭数据库连接,调用Connection对象的Close()方法。
command对象的三种方法的对比如下所示。
※ ExecuteScalar()方法:执行查询操作,并返回结果集中的第一行和第一列。
※ ExecuteReader()方法:执行查询操作,返回DataReader对象。
※ ExecutenonQuery()方法:执行添加、修改、删除操作,返回受影响的行数。
以上是关于ADO.NET,数据库N万条数据操作的主要内容,如果未能解决你的问题,请参考以下文章