none
[求助]帮忙下,解决存储过程调用问题 RRS feed

  • 问题

  • 在网上找了一个MySql存储过程
    http://www.cnblogs.com/my6521/articles/1409235.html

     
        public static DataTable GetTopicPageNationData(ref string[] pa)  
        {  
     
            int totalCount = 0; //记返回总记录  
            int totalPageCoun = 0; //返回总页数  
     
            DataTable dt = new DataTable();  
     
     
            using (MySqlConnection conn = new MySqlConnection("Server = localhost; user id = admin; password = 'admin'; database = vrigo; pooling = false"))  
            {  
                MySqlDataAdapter da = new MySqlDataAdapter();  
                MySqlCommand cmd = new MySqlCommand();   
     
                cmd.Connection = conn;  
                conn.Open();  
                cmd.CommandText = "P_viewPage";  
                cmd.CommandType = CommandType.StoredProcedure;  
                cmd.Parameters.Add("$TableName", MySqlDbType.VarChar, 200);  
                cmd.Parameters.Add("$FieldList", MySqlDbType.VarChar, 2000);  
                cmd.Parameters.Add("$PrimaryKey", MySqlDbType.VarChar, 100);  
                cmd.Parameters.Add("$Where", MySqlDbType.VarChar, 1000);  
                cmd.Parameters.Add("$Order", MySqlDbType.VarChar, 1000);  
                cmd.Parameters.Add("$SortType", MySqlDbType.Int32);  
                cmd.Parameters.Add("$RecorderCount", MySqlDbType.Int32);  
                cmd.Parameters.Add("$PageSize", MySqlDbType.Int32);  
                cmd.Parameters.Add("$PageIndex", MySqlDbType.Int32);  
                cmd.Parameters.Add("$TotalCount", MySqlDbType.Int32);  
                cmd.Parameters.Add("$TotalPageCount", MySqlDbType.Int32);  
     
                cmd.Parameters["$TableName"].Value = "cdb_threads";  
                cmd.Parameters["$FieldList"].Value = "tid,fid,subject,authorid,replies,views";  
                cmd.Parameters["$PrimaryKey"].Value = "tid";  
                cmd.Parameters["$Where"].Value = "fid = 59";  
                cmd.Parameters["$Order"].Value = "asc";  
                cmd.Parameters["$SortType"].Value = 1;  
                cmd.Parameters["$RecorderCount"].Value = 0;  
                cmd.Parameters["$PageSize"].Value = 3;  
                cmd.Parameters["$PageIndex"].Value = 1;  
     
                cmd.Parameters["$TotalCount"].Direction = ParameterDirection.Output;  
                cmd.Parameters["$TotalPageCount"].Direction = ParameterDirection.Output;  
                cmd.ExecuteNonQuery();  
                da.SelectCommand = cmd;  
                da.Fill(dt);  
                totalCount = int.Parse(cmd.Parameters["$TotalCount"].Value.ToString());  
                totalPageCoun = int.Parse(cmd.Parameters["$TotalPageCount"].Value.ToString());  
     
                pa[0] = totalCount.ToString();  
                pa[1] = totalPageCoun.ToString();  
     
                 
            }  
                 return dt;  
        } 

    当 PageIndex =1;即第一页可以显示,但要如何显示第二页呢?
    如果直接改 PageIndex =2;会出错
    2009年3月21日 14:37

答案

  •  cmd.Parameters["$PageIndex"].Value = 1;  其他页修改这里的值,如果出错,则存储过程写的有问题,没有环境,无法进一步测试。你可以对存储过程想办法进行调试一下,如果打印出每一步的结果值
    孟宪会
    2009年3月21日 23:56
    版主

全部回复

  •  cmd.Parameters["$PageIndex"].Value = 1;  其他页修改这里的值,如果出错,则存储过程写的有问题,没有环境,无法进一步测试。你可以对存储过程想办法进行调试一下,如果打印出每一步的结果值
    孟宪会
    2009年3月21日 23:56
    版主
  • 非常感谢...果然是存储过程出了点问题,
    select max(tid) from table  写成了 select max (tid) from table;就报错了找不到max
    2009年3月22日 2:19