在数据库中测试是没有问题的,但是在程序中返回值就没东西啊!
MySQL存储过程:    
create procedure sp_fenye(pageindex int,pagesize int,out countpage int) begin  declare start_row int;  set start_row = (pageindex-1) * pagesize + 1;  if pagesize < 1 then   set pagesize = 1;  end if;  select * from userinfo order by id asc limit start_row,pagesize;  set countpage = ceiling(@rows_total/pagesize); end;
======================================================================
C#调用的代码:   
using System;
using System.Data;
using MySql.Data.MySqlClient;namespace _03执行带存储过程的参数
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("每页显示几条数据?");
            int pageSize = int.Parse(Console.ReadLine());
            Console.WriteLine("要显示第几页?");
            int currentPage = int.Parse(Console.ReadLine());
            using (MySqlConnection connection = new MySqlConnection("server=127.0.0.1;database=lslz;uid=mytest;pwd=123"))
            {
                using (MySqlCommand cmd = new MySqlCommand(" sp_fenye", connection))
                {
                    cmd.CommandType = CommandType.StoredProcedure;                    MySqlParameter outParmCount = new MySqlParameter("@countpage",MySqlDbType.Int32)
                    {
                        Direction = ParameterDirection.Output
                    };                    MySqlParameter[] parameters = new MySqlParameter[]
                    {
                        new MySqlParameter("@pagesize",pageSize),
                        new MySqlParameter("@pageindex",currentPage),
                        outParmCount
                    };                    cmd.Parameters.AddRange(parameters);                    if (connection.State == ConnectionState.Closed)
                    {
                        connection.Open();
                    }
                    using (MySqlDataAdapter adapter = new MySqlDataAdapter())
                    {
                        DataSet ds = new DataSet();
                        adapter.SelectCommand = cmd;
                        adapter.Fill(ds);
                        //接收传出参数
                             string res = outParmCount.Value.ToString();
                        //在这里接收到的res为空字符串,ds中是有数据的
                    }
                }
                Console.ReadKey();
            }
        }
    }
}
C#.NETMySQL存储过程分页

解决方案 »

  1.   

    你没有把输出参数加到列表中,加上下面这句就行了。
    cmd.Parameters.AddRange(outParmCount);
      

  2.   


     MySqlParameter[] parameters = new MySqlParameter[]
                        {
                            new MySqlParameter("@pagesize",pageSize),
                            new MySqlParameter("@pageindex",currentPage),
                            outParmCount
                        };我在这里已经加入了啊
      

  3.   

    最后还是自己解决了,后来看了好久之后终于发现是存储过程变量@rows_total没有声明的问题。在这里写出来告诉大家,希望大家不要犯同样的错误了哦~