c#数据编程问题 ( 积分: 50 )

皇兄

Unregistered / Unconfirmed
GUEST, unregistred user!
我在用C#做一个程序,其中需要
1.通过OLDB联接到数据库(10万条记录),
2.每次只显示一条记录,
3.提供数据导航条(上一,下一记录按钮)
4.每次向数据为回写指定记录的两个字段,
如果用OleDbDataAdapter,一次性把数据读取过来,方便是了BindingManagerBase,但暂用资源太大,如果用OleDbDataReader,但好象不能Binding,请高手给个建议。
 
一次性把数据取出来,10万记录,全部写到内存中,肯定很占用资源
你的记录有没有编号,可以试着根据编号,一次只读取一条记录
 
DELPHI的Client有pocketPack值,C#里不知道怎样处理这样的问题,关注
 
给你提供一个比较好的建议吧,可以指定每次从数据表读出几条记录,临时加入一个排序字段,然后每次调用的时候传入几个参数,这样做便可以减少资源开销了,给你提供一段小代码吧:
Create Procedure GetDefinedRecord
(
@PageIndex int, --当前页号
@PageCount int, --每页显示记录的大小
@msWhere varChar(2000) --查询的条件
)
As
Declare @sSQL varChar(8000)
--TableName指的是你要查询的表名,可以根据实际情况替代
Set @sSQL = 'Select Identity(int,1,1) As OrderNo,* Into #temp1 From TableName'
if(@msWhere <> '')
begin
Set @sSQL = @sSQL + ' Where ' + @msWhere + ' '
end
Set @sSQL = @sSQL + 'Select * From #temp1 Where OrderNo > ' + Convert(varChar(5),(@PageIndex-1)*@PageSize) + ' And OrderNo<=' + Convert(varChar(5),(@PageIndex*@PageSize))
Set @sSQL = @sSQL + ' Drop Table #temp1'
Exec(@sSQL)
Go
直接调用这个存储过程,传入相应的参数就可以实现你所说的功能了,已经经过验证,可以运行.在C#里面调用这个存储过程,直接用一个DataTable或DataView进行获取就行了.
 
不好意思,我把问题说的还不够明白。
数据库是软件使用方的数据库,也就是一个未知结构的数据库。
软件不得对数据库结构作修改。
 
http://www.51zhan.com 最好的网址站
http://www.51zhan.com 最好的网址站
http://www.51zhan.com 最好的网址站
 
那你想要做的是什么呢?是对这个软件的二次开发吗?
 
to ExChange:
是一个拍照软件,为已有的数据库拍摄照片,并保存到数据库中。
这个问题已经搞定,用了一个笨办法,
next按钮:
{新建一个oledbreader}
if (pos <rcount)
pos += 1;
while (int i=1,i<=pos,i++)
myDBReader.Read();
txtxm.Text = myDBReader["xm"];
 
有人知道C#中如何向VFP和Paradox表中写数据吗?
我建的Foxpro、Access、SQL表的连接可以UpData,可用Paradox表报查询不可更新,VFP表报OLEDB表达式错误
 
接受答案了.
 
顶部