日期:2014-05-18  浏览次数:20763 次

如何从数据库一条一条的顺序读取一条记录
比如:数据库有100条记录。

我想按顺序,每次都读取一条记录出来。

请问各位如何实现?

我使用ole DB 访问数据库。

谢谢

------解决方案--------------------
探讨
引用:

这个不是SQL的内容,是程序的事情.用循环按照某个排序顺序或倒序逐一获取数据即可.


呵呵,恩,看看各位有什么看法。


按照自然顺序,把记录读出来。

------解决方案--------------------
SQL code
--查询数据表第几行至第几行数据的SQL语句
--如N行到M行(M>N)   
  select   top   (M-N)   *   from   tablename   where   id   not   in   (select   top   N   id   from   tablename)
--id 为字段名,N为整型循环变量

--稍作变形即可
select   top   1   *   from   tablename   where   id   not   in   (select   top   N   id   from   tablename)

------解决方案--------------------
SQL code

CREATE TABLE TEST (ID INT IDENTITY(1,1) ,NAME VARCHAR(20))
INSERT INTO TEST SELECT 'ZHANG' 
UNION ALL
SELECT 'LI'
UNION ALL
SELECT 'CHEN'

DECLARE @NUM INT
SET @NUM=1

WHILE(@NUM<=100)
BEGIN
SELECT * FROM
(SELECT *,ROW_NUMBER() OVER(ORDER BY GETDATE()) AS ROWID FROM TEST) TB
WHERE ROWID=@NUM
SET @NUM=@NUM+1
END

------解决方案--------------------
变通一下啊:
SQL code

if exists(select 1 from sysobjects where name = 'PageRecord' and xtype = 'p')
    drop procedure PageRecord
go
CREATE  procedure   [dbo].[PageRecord]     
  @Sql   nvarchar(4000),   --查询字符串     
  @PageIndex   int,   --第n页  设置为第几行即可!
  @PageSize   int   --每页行数 设置为1即可!  
  as     
  set   nocount   on     
  declare   @p1   int,   --p1是游标的id     
  @rowcount   int     
  exec   sp_cursoropen   @p1   output,@Sql,@scrollopt=1,@ccopt=1,@rowcount=@rowcount   output     
  set   @PageIndex=(@PageIndex-1)*@PageSize+1     
  exec   sp_cursorfetch   @p1,16,@PageIndex,@PageSize      
  select @rowcount
  --select   ceiling(1.0*@rowcount/@pagesize)   as   总页数--,@rowcount   as   总行数,@currentpage   as   当前页       
  exec   sp_cursorclose   @p1     
  set   nocount   off 
GO
--每次读取1条数据
EXEC [PageRecord] "SELECT * FROM USERINFO",1,1
go
EXEC [PageRecord] "SELECT * FROM USERINFO",2,1
go