当前位置:K88软件开发文章中心编程语言.NET.NET01 → 文章内容

asp.net三层架构调用存储过程的实例

减小字体 增大字体 作者:wangsdong     来源:asp编程网  发布时间:2018-12-30 7:42:49

这个asp.net三层架构(VS三层架构)实例是在http://www.K88.NET/tech/showtech.asp?id=546这个实例的基础上实现的,大家先了解一下这个实例,弄懂这个实例。因为两个实例中相同的地方我就不重复了,我只介绍不同的地方。

在这个实例中可以学到的东西有:VS三层架构原理 C
#调用存储过程方法 C
#分页方法

开始了,先创建一个存储过程getlist

create PROCEDURE [dbo].[getlist] @page INT = 1,  --当前页:默认为第一页@page_size INT =10,--每页数量:10条@maxpage INT = NULL OUTPUT  --返回总页数ASBEGIN  SET NOCOUNT ON
Select * FROM (select ROW_NUMBER()Over(order by id desc) as rowId, * from users) as mytable where rowId between CONVERT(VARCHAR,(@page-1)*@page_size+1) and CONVERT(VARCHAR,@page*@page_size) DECLARE @count int SELECT @count=COUNT(*) FROM users IF @count % @page_size=0 SET @maxpage=@count/@page_size ELSE SET @maxpage=@count/@page_size+1RETURN @maxpage END
(鼠标移到代码上去,在代码的顶部会出现四个图标,第一个是查看源代码,第二个是复制代码,第三个是打印代码,第四个是帮助)

 

下面开始C
#开发了
和前面一个例子一样,前4步一样,我们从第5步开始,其中连接数据库代码不需要修改,再增加一个分页函数fpage

/// <
br>
/// 功 能:C
#分页代码/// 创建人:wangsdong/// 来 源:www.K88.NET/// 分页样式:首页 上一页 1...3 4,5,6,7,8...10 下一页 最后一页 /// <
/br>
/// <
param name="current_page">
当前页<
br>
/// <
param name="page_count">
总页数<
br>
/// <
param name="furl">
连接地址<
br>
/// <
returns>
字符串<
br>
public string fpage(Int32 current_page,Int32 page_count,string furl)
{ string str = ""
Int32 i, j, k
Int32 num = 3
if (current_page <
= num)
{ i = 1
} else
{ i = current_page - num
} if (current_page <
page_count - num)
{ j = current_page + num
} else
{ j = page_count
} if (current_page >
1)
{ str += "<
a href=\"" + furl + "page=1\">
首页<
/a>
&
nbsp
<
a href=\"" + furl + "page=" + (current_page - 1).ToString() + "\">
上一页<
/a>
&
nbsp
"
if (current_page >
num+1)
{ str += "<
a href=\"" + furl + "page=1\">
1<
/a>
..."
} } else
{ str += "首页&
nbsp
上一页&
nbsp
"
} for (k = i
k <
= j
k++)
{ if (k == current_page)
{ str += "<
strong>
" + k.ToString() + "<
/strong>
&
nbsp
"
} else
{str += "<
a href=\"" + furl + "page=" + k + "\">
" + k.ToString() + "<
/a>
&
nbsp
"
} } if (current_page <
page_count)
{ if (current_page <
= page_count - num - 1)
{ str += "...<
a href=\"" + furl + "page=" + page_count + "\">
" + page_count.ToString() + "<
/a>
&
nbsp
"
} str += "<
a href=\"" + furl + "page=" + (current_page + 1).ToString() + "\">
下一页<
/a>
&
nbsp
<
a href=\"" + furl + "page=" + page_count + "\">
最后一页<
/a>
&
nbsp
"
} else
{ str += "下一页&
nbsp
最后一页&
nbsp
"
} return str
}
(鼠标移到代码上去,在代码的顶部会出现四个图标,第一个是查看源代码,第二个是复制代码,第三个是打印代码,第四个是帮助)

 

第7步需要修改一下,也是最重要的
因为要进行分页,所以要传入当前页数和每页要显示的数量,所以这里要修改原来的getlist()函数。

public string getlist(Int32 page,Int32 page_size)
{ string str = ""
Data.DBConn dbconn = new DBConn()
SqlConnection myconn = dbconn.getconn()
try
{ myconn.Open()
SqlCommand cmd = new SqlCommand("getlist", myconn)
//调用存储过程 cmd.Parameters.Add("@page", SqlDbType.Int).Value = page
//给存储过程中的@page传值 cmd.Parameters.Add("@page_size", SqlDbType.Int).Value = page_size
//给存储过程中的@page_size传值 cmd.Parameters.Add("@maxpage", SqlDbType.Int)
//获取存储过程中的总页数 cmd.Parameters["@maxpage"].Direction = ParameterDirection.Output
cmd.CommandType = CommandType.StoredProcedure
SqlDataAdapter da = new SqlDataAdapter(cmd)
DataSet ds = new DataSet()
da.Fill(ds)
if (ds.Tables[0].Rows.Count >
0)
{ str = "<
table cellpadding=0 cellspacing=0 border=1 width=500 >
\r\n"
string username, password
foreach (DataRow m in ds.Tables[0].Rows)
{ username = m["username"].ToString()
password = m["password"].ToString()
str += "<
tr>
\r\n"
str += " <
td>
" + username + "<
/td>
\r\n"
str += " <
td>
" + password + "<
/td>
\r\n"
str += "<
/tr>
\r\n"
} str += "<
tr>
<
td colspan=2>
" + dbconn.fpage(page,Convert.ToInt32(cmd.Parameters["@maxpage"].Value),"Default.aspx?") + "<
/td>
<
/tr>
"
//调用分页 str += "<
/table>
\r\n"
} da.Dispose()
da = null
myconn.Dispose()
myconn.Close()
} catch (Exception ex)
{ throw
} f

[1] [2]  下一页


asp.net三层架构调用存储过程的实例