VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1196|回复: 6

请帮忙看看这个是用.net访问存储过程,但不知道错出在那里

[复制链接]

1

主题

5

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
发表于 2020-3-22 14:30:01 | 显示全部楼层 |阅读模式
SqlConnection dbConn = Utility.OpenConnection();
            SqlDataReader dbReader;
            SqlCommand dbComm = new SqlCommand();
            SqlParameter dbParameter;

            dbComm.CommandText = "List";
            dbComm.Connection = dbConn;
            dbComm.CommandType = CommandType.StoredProcedure;

            dbParameter = new SqlParameter("@RecordCount", SqlDbType.Int, 4);
            dbParameter.Direction = ParameterDirection.Output;
            dbComm.Parameters.Add(dbParameter);

            dbParameter = new SqlParameter("@PageCount", SqlDbType.Int, 4);
            dbParameter.Direction = ParameterDirection.Output;
            dbComm.Parameters.Add(dbParameter);

            dbParameter = new SqlParameter("@PageIndex", SqlDbType.Int, 4);
            dbParameter.Direction = ParameterDirection.Input;
            dbParameter.Value = Pageindex;
            dbComm.Parameters.Add(dbParameter);

            dbParameter = new SqlParameter("@PageSize", SqlDbType.Int, 4);
            dbParameter.Direction = ParameterDirection.Input;
            dbParameter.Value = Pagesize;
            dbComm.Parameters.Add(dbParameter);

            dbReader = dbComm.ExecuteReader();
//上面一句出错,说什么[SqlException (0x80131904): 对象名 'LOG_User' 无效。]
回复

使用道具 举报

0

主题

8

帖子

7.00

积分

新手上路

Rank: 1

积分
7.00
发表于 2020-6-30 14:45:01 | 显示全部楼层
不是C#语句的错误
检查你的存储过程
而不是ExecuteReader()
是不是存储过程里写了"LOG_User"之类的
回复

使用道具 举报

1

主题

5

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
 楼主| 发表于 2020-6-30 17:00:02 | 显示全部楼层
CREATE PROCEDURE List  
@PageIndex INT, --输入当前页码
@PageSize INT, --每页的记录数
@RecordCount INT OUT, --记录数
@PageCount INT OUT --页数

AS

SELECT @RecordCount = COUNT(*) FROM BLOG_Info INNER JOIN LOG_User ON BLOG_Info.uid = BLOG_User.uid
SET @PageCount = CEILING(@RecordCount * 1.0 / @PageSize)

DECLARE @SQLSTR NVARCHAR(1000)

IF @PageIndex = 0 OR @PageCount <= 1  --第一页

        set @SQLSTR = "select top  "+STR( @PageSize )+" BLOG_Info.title, BLOG_Info.detail, BLOG_User.uname, BLOG_Info.dtime, BLOG_User.url, BLOG_Info.iid  FROM BLOG_Info INNER JOIN BLOG_User ON BLOG_Info.uid = BLOG_User.uid order by BLOG_Info.dtime desc"

else if @PageIndex = @PageCount - 1   --最后一页

        set @SQLSTR = "select top  "+STR( @PageSize )+"BLOG_Info.title, BLOG_Info.detail, BLOG_User.uname, BLOG_Info.dtime, BLOG_User.url, BLOG_Info.iid  FROM BLOG_Info INNER JOIN BLOG_User ON BLOG_Info.uid = BLOG_User.uid where BLOG_Info.iid>(select max(BLOG_Info.iid) from (select top "+STR(@PageSize * @PageIndex )+"  BLOG_Info.title, BLOG_Info.detail, BLOG_User.uname, BLOG_Info.dtime, BLOG_User.url, BLOG_Info.iid  FROM BLOG_Info INNER JOIN BLOG_User ON BLOG_Info.uid = BLOG_User.uid order by BLOG_Info.dtime desc )) order by BLOG_Info.dtime desc"

else
        set @SQLSTR = "select top  "+STR( @PageSize )+"BLOG_Info.title, BLOG_Info.detail, BLOG_User.uname, BLOG_Info.dtime, BLOG_User.url, BLOG_Info.iid  FROM BLOG_Info INNER JOIN BLOG_User ON BLOG_Info.uid = BLOG_User.uid where BLOG_Info.iid>(select max(BLOG_Info.iid) from (select top "+STR(@PageSize * @PageIndex )+"  BLOG_Info.title, BLOG_Info.detail, BLOG_User.uname, BLOG_Info.dtime, BLOG_User.url, BLOG_Info.iid  FROM BLOG_Info INNER JOIN BLOG_User ON BLOG_Info.uid = BLOG_User.uid order by BLOG_Info.dtime desc )) order by BLOG_Info.dtime desc"

EXEC (@SQLSTR)
GO

这是我的存储过程,看看有没有错。
回复

使用道具 举报

1

主题

5

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
 楼主| 发表于 2020-7-1 00:00:01 | 显示全部楼层

发现刚才的问题,主要是因为漏掉一个字母,但是现在又变成下面的错误了
SqlException (0x80131904): 第 1 行: ')' 附近有语法错误。]
回复

使用道具 举报

1

主题

5

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
 楼主| 发表于 2020-7-1 12:15:02 | 显示全部楼层
奇怪了,我把@PageSize的值改成10就可以了。
回复

使用道具 举报

0

主题

6

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-7-1 20:45:02 | 显示全部楼层
你存储过程有错误。
"+STR( @PageSize )+"

不是这么写的。
回复

使用道具 举报

1

主题

5

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
 楼主| 发表于 2020-7-2 16:15:01 | 显示全部楼层
应该如何写,但是目前我把输入值@PageSize改成1,2,就不行,哦忘了说,总记录数是三条
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表