.NET中用存储过程实现分页效果!

我的存储过程如下:createprocpage@tabnamevarchar(20),--表名@pkcolumnvarchar(20),--表的主键列名@pageinde... 我的存储过程如下:
create proc page
@tabname varchar(20),--表名
@pkcolumn varchar(20),--表的主键列名
@pageindex int,--第几页
@pageSize int--第页显示的记录条数
as
declare @sql varchar(200)
set @sql='select top '+cast (@pageSize as varchar)+' * from '+ @tabname +' where '
+@pkcolumn+' not in (select top '+cast((@pageindex-1)*@pageSize as varchar)+' '+@pkcolumn+' from '+@tabname+ ')'
exec(@sql)
select @sql
exec page 'city','id',1,7//调用方法
drop proc page//删除存储过程
现在不知道怎么在.NET中调用这个存储过程实现分页效果。
知道的做法的帮我调用这个存储过程写个例子,不要用sqlhelper类,全部用手写代码实现,越详细越好。。谢谢,答案满意一定追加高分!
展开
 我来答
冷情冷学
推荐于2016-02-09 · TA获得超过100个赞
知道答主
回答量:89
采纳率:0%
帮助的人:0
展开全部
public void GetPage(string procName,string tabname ,string pkcolumn,int pageindex,int pagesize) {
SqlConnection conn = new SqlConnection("");//数据连接字符串
conn.Open();
SqlCommand cmd = new SqlCommand(procName,conn);//procName 为存储过程名称,
cmd.CommandType = CommandType.StoredProcedure;//表示执行存储过程
//下面是将参数赋值
SqlParameter para = new SqlParameter("@tabname",tabname);
SqlParameter para1 = new SqlParameter("@pkcolumn", pkcolumn);
SqlParameter para2 = new SqlParameter("@pageindex", pageindex);
SqlParameter para3 = new SqlParameter("@pagesize", pagesize);
SqlParameter[] pa = { para, para1, para2, para3 };
cmd.Parameters.Add(pa);
SqlDataReader dr = cmd.ExecuteReader();
while(dr.Read()){
....
}
dr.Close();
conn.Close();
}
你可以将该方法写为带有返回值的。。返回类型集合类型的 便于绑定treeview等控件
更多追问追答
追问
能不能再详细点。。谢谢!! 用我提供的这个存储过程!
追答
这是你用你的存储过程啊。。。你只需要将参数传进来就可以了额。。将里面的代码补充完整就可以了
参数的意思分别是:存储过程名,表名,列明,索引,每页显示的行数
后面的四个参数,是你的存储过程所需要的参数

如果你需要返回实体类则修改下就好
public List GetPage(string procName,string tabname ,string pkcolumn,int pageindex,int pagesize) {
SqlConnection conn = new SqlConnection("");//数据连接字符串
conn.Open();
SqlCommand cmd = new SqlCommand(procName,conn);//procName 为存储过程名称,
cmd.CommandType = CommandType.StoredProcedure;//表示执行存储过程
//下面是将参数赋值
SqlParameter para = new SqlParameter("@tabname",tabname);
SqlParameter para1 = new SqlParameter("@pkcolumn", pkcolumn);
SqlParameter para2 = new SqlParameter("@pageindex", pageindex);
SqlParameter para3 = new SqlParameter("@pagesize", pagesize);
SqlParameter[] pa = { para, para1, para2, para3 };
cmd.Parameters.Add(pa);
SqlDataReader dr = cmd.ExecuteReader();
list list =new List();
while(dr.Read()){
这里自己补充
....
}

dr.Close();
conn.Close();
return list;
}
oo_Key
2011-04-29
知道答主
回答量:28
采纳率:0%
帮助的人:6万
展开全部
private void button1_Click(object sender, EventArgs e)
{
SqlConnection con = null;
try
{
//1: 创建数据连接对象connection
con = new SqlConnection(DBHelper.conString);

//2: 创建数据操作对象command
string sqltxt = string.Format("usp_checkUser");
SqlCommand cmd = new SqlCommand(sqltxt, con);

//参数设置

//设置命令类型(存储)
cmd.CommandType = CommandType.StoredProcedure;

//存储过程参数的设置
cmd.Parameters.Add("@QQid", SqlDbType.Int).Value = this.textBox1.Text;
cmd.Parameters.Add("@pwd", SqlDbType.VarChar, 50).Value = this.textBox2.Text;
cmd.Parameters.Add("@ispass", SqlDbType.Int).Direction = ParameterDirection.Output;
cmd.Parameters.Add("@mess", SqlDbType.VarChar, 50).Direction = ParameterDirection.Output;

//3:打开数据连接
con.Open();

//4:执行sql语句
cmd.ExecuteNonQuery();

//输出参数的提取
int result = (int)cmd.Parameters["@ispass"].Value;
string returnMessage = cmd.Parameters["@mess"].Value.ToString();

//登录成功
if (result == 0)
{
this.Hide();
frmMain frmobj = new frmMain();
frmobj.ShowDialog();
this.Show();
}
else
{
MessageBox.Show(returnMessage);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
//5:关闭数据连接
con.Close();
}
}

//这是我以前做的,你当示例看看吧,这是一个按钮的点击事件触发的代码
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
色表哥
2011-05-04 · TA获得超过190个赞
知道答主
回答量:133
采纳率:100%
帮助的人:21.8万
展开全部
去冰河博客 大把的好东西
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
rocky_wl
2011-04-28 · TA获得超过180个赞
知道答主
回答量:199
采纳率:0%
帮助的人:159万
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式