本文目录一览:
- ASP.net怎么连接mysql数据库进行数据操作?
- asp.net sql语句分页
- asp.net如何分页显示数据
- 关于asp.net应用程序存储过程做高效分页
- asp.net 怎么分页
- 如何使用asp.net代码实现分页功能 连接到sql server 数据库中
ASP.net怎么连接mysql数据库进行数据操作?
- 资源:Mysql-5.6.24-win32、VS2013、mysql-connector-odbc-5.3.6-win32;
- ODBC下载:在Mysql官网可下载Mysql ODBC,注意,什么版本的mysql配什么版本的ODBC,很重要!
- 下载后双击安装。
- 创建ODBC数据源:
- 打开控制面板-系统和安全-管理工具-ODBC数据源(32位)
- 因为我安装的mysql数据库是32位的,所以选择32位的数据源:
- 弹出数据源管理程序(32位):
- 选择用户DNS,点击右边的“添加”按钮,选择MySQL ODBC 5.3 ANSI Driver-完成:
- 弹出界面如图所示:Data Source Name可自己随意填写;TCP/IP Server如果是本机数据库的话一般填localhost;Port端口号不要改;User填root,Password填你登陆自己的mysql时所用的密码;Database选择一个你已经建好的mysql数据库,比如我选择数据库XYDdata;最后点击Text测试,弹出连接成功的对话框(这一步如果出错,没有弹出连接成功的对话框,那么极有可能是因为下载的Mysql ODBC与Mysql的版本不相匹配)。
- 选择系统DNS,点击添加,步骤、填法同上,不再细讲。
- 完成后,如图所示,用户DNS和系统DNS都添加了名为Lizer的数据源:
- ODBC数据源创建成功。
- 打开VS2013,新建一个ASP.net应用程序:
- 添加一个Web窗体WebForm1.aspx:
- 使用ASP数据绑定控件:
- 以GridView控件为例:
- GridView以表的形式显示数据,并提供对列进行排序、分页、翻阅数据及编辑或删除单个记录的功能。
- 使用示例:
- 视图-工具箱-数据,双击GridView将控件拖到页面中:
- 在“设计”中点击右边的小箭头,弹出GridView任务,选择数据源选择“新建数据源”:
- 弹出:
- 选择“SQL数据库”,点击“新建连接”:
- 如下图所示,数据源选择ODBC数据源;数据源选择我们前面新建的数据源”Lizer";登陆信息中用户名密码即为我们在创建数据源“Lizer"时填写的User和Password:
- 点击确定,再点击下一步:
- 输入SQL语句
select * from Book
(Book是数据库中的一个表): - 点击 下一步-完成。
- 软件会为我们自动生成代码:
- 行程序,表Book中的数据以表格的形式呈现出来:
asp.net sql语句分页
一般的分页查询不是用做的,通常分页是:
select top 10 from StudentPayment where SpId not in (select top 10 SpId from StudentPayment ORDER BY SpId)
要做出分页效果第一个10代表页尺寸就是每一页显示多少条,第二个代表页尺寸乘以页数减一,如pageSize代表页尺寸,num代表多少页,.net里拼接sql语句为:
string sql="select top "+pageSize+" from StudentPayment where SpId not in (select top "+pageSize*(num-1)+" SpId from StudentPayment ORDER BY SpId)"
其实sql server数据库还有另外几种分页方式,如像oracle里的序号类似的sql里也有,这种是最简单的。
asp.net如何分页显示数据
public static ListBooks getBooksByPageIndex(int pageIndex,int pageSize)
{
//pageIndex当前页数,从1开始,pageSize每页显示的行数
//bookscount是当前页数前查询过的记录,如,当前第三页,每页5条记录,则bookscount就为10,也就是说,从10以后开始查询11-15的记录
int bookscount=(pageIndex-1)*pageSize;
string sql="select top "+pageSize+" * from TBL_Books where bookId not in(select top "+bookscount+" bookId from TBL_Books order by bookId) order by bookId";
.....
//从TBL_Books表中查询top pageSize 的记录,条件是bookId不等于当前页数前查询过的数据,order By可要可不要
}
关于asp.net应用程序存储过程做高效分页
ASP.net 的DataGrid 控件的内置分页功能一直不被看好,原因是它先把所有数据从数据库读出来再进行分页。在数据量很大的情况下,用它内置的分页功能被认为几乎是不可能的事。对海量数据的读取和分页,大家会通过自定义分页来实现。其核心技术是SQL语句的设计。一般有三种方案:
方案一:(利用SQL的游标存储过程分页)
create procedure XiaoZhengGe
@sqlstr nvarchar(4000), --查询字符串
@currentpage int, --第N页
@pagesize int --每页行数
as
set nocount on
declare @P1 int, --P1是游标的id
@rowcount int
exec sp_cursoropen @P1 output,@sqlstr,@scrollopt=1,@ccopt=1,@rowcount=@rowcount output
select ceiling(1.0*@rowcount/@pagesize) as 总页数--,@rowcount as 总行数,@currentpage as 当前页
set @currentpage=(@currentpage-1)*@pagesize+1
exec sp_cursorfetch @P1,16,@currentpage,@pagesize
exec sp_cursorclose @P1
set nocount off
方案二:(利用SELECT TOP和Not In分页)
SELECT TOP 页大小 *
FROM TestTable
WHERE (ID NOT IN
(SELECT TOP 页大小*页数 id
FROM 表
ORDER BY id))
ORDER BY ID
分页方案三:(利用SELECT TOP和IDMAX(id)分页)
SELECT TOP 页大小 *
FROM TestTable
WHERE (ID
(SELECT MAX(id)
FROM (SELECT TOP 页大小*页数 id
FROM 表
ORDER BY id) AS T))
ORDER BY ID
有网友通过SQL 查询分析器进行比较,得出结论:
- 方案三(利用IDMAX(id))效率最高;
- 方案二(利用Not In) 效率次之;
- 方案一(利用SQL的游标存储过程分页)最为通用,但效率最差。 事实果真是这样吗?这三种方案就是比DataGrid 控件的内置分页功能好吗?我以前用Access做程序时发现Not in语句效率很低的呀?于是决定亲自试一试。 装SQL有点麻烦,就用 Access 吧,方案一用存储过程分页没有试验。 用Access新建一Book.mdb文件,打开后建一表mytable,加入五个字段:ID,name,author,islend,username。建好表后向内灌入一定数量的记录,以方案二、方案三和DataGrid 控件的内置分页功能分别写一个 .aspx 文件,同时写一 .asp 文件进行比较。 测试条件:P4 2.4G,256MDDR,WindowsXP,IIS,每页20条记录。
IDMAX(id)语句:string sqlstr="Select Top "+PageSize+" * from mytable where(ID (select MAX(ID) from(select top "+(PageSize*CurrentPage)+" ID from mytable order by ID asc))) order by ID asc";
Not In语句:string sqlstr="Select Top "+PageSize+" * from mytable where ID not in(select top "+(PageSize*CurrentPage)+" ID from mytable order by ID asc) order by ID asc";
运行结果如下:
方案 | 记录条数及换页时间 |
---|---|
100万 | 276000 |
IDMAX(ID) | 16秒 |
not in | 未打开网页 |
DataGrid内置分页 | 未打开网页 |
asp分页 | 未打开网页 |
通过比较可见,DataGrid 控件的内置分页功能的确不怎么样,但比起一直比较流行的 Not in 语句分页是好多了,至少在20多万条记录的情况下能显示网页。 有人说asp.net 因为是编译执行,运行速度上比asp要快。通过测试没发现快多少。 | |
另:据说 DataList 控件比 DataGrid 控件数据显示性能方面要好一些,可能是真的。我对这两个控件也分别进行了测试,没感觉有多大差异,至少在27万条记录的情况下觉不出来。 | |
难道想象和现实之间的差距真的这么大吗? |
asp.net 怎么分页
当GridView中显示的记录很多的时候,可以通过GridView的分页功能来分页显示这些记录。如果GridView是直接绑定数据库,则很简单:只要点击GridView空间左上角的小三角形,再弹出的选项中,将"启动分页"打上勾即可。 如果是用代码实现,则需要这么做:
- 允许分页:设置
AllowPaging=True
; - 设置GridView属性栏中PagerSetting里的一些属性中,定义分页的样式;
- 数据部署:将数据显示到GridView上;
- 加入相关事件:
PageIndexChanged()
、PageIndexChanging()
; - 如果要添加分页码显示,即显示当前在第几页,还需添加
DataBound()
事件。
例子:
功能:GridView分页使用图片按钮并添加分页码显示。 默认情况下GridView的分页按钮如果以图片来显示就无法显示文字,这样就无法知道当前所在的页数。于是,添加分页代码显示就可以显示所在分页的索引数字了。
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
public partial class GridView_Page : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//设置分页的图片按钮,这些都可以在控件的属性表上的pagersetting里设置
if (!IsPostBack)
{
GridView1.Caption = "这是一个GridView的小实验"; //Caption属性类似于表名,显示在控件的正上方。
GridView1.PagerSettings.Mode = PagerButtons.NextPreviousFirstLast;
GridView1.PagerSettings.NextPageImageUrl = "img/next.gif";
GridView1.PagerSettings.PreviousPageImageUrl = "img/pre.gif";
GridView1.PagerSettings.FirstPageImageUrl = "img/first.gif";
GridView1.PagerSettings.LastPageImageUrl = "img/last.gif";
GridView1.PageSize = 10; //每页最多显示10条记录;
BindData();
}
}
private void BindData()
{
//将数据部署到GridView中
string Constr = "server=localhost; uid=sa;pwd=123456;database=NorthWind";
string sqlstr = "select * from products";
SqlConnection con = new SqlConnection(Constr);
SqlDataAdapter ad = new SqlDataAdapter(sqlstr, con);
DataSet ds = new DataSet();
ad.Fill(ds);
GridView1.DataSource = ds;
GridView1.DataBind();
}
protected void GridView1_PageIndexChanged(object sender, EventArgs e)
{
//进行分页之后,重新部署数据
BindData();
}
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
//分页完成之前
GridView1.PageIndex = e.NewPageIndex;
}
protected void GridView1_DataBound(object sender, EventArgs e)
{
//添加分页码显示
GridViewRow bottomPagerRow = GridView1.BottomPagerRow;
Label bottomLabel = new Label();
bottomLabel.Text = "目前所在分页:(" + (GridView1.PageIndex + 1) + "/" + GridView1.PageCount + ")";
bottomPagerRow.Cells[0].Controls.Add(bottomLabel);
}
}
如何使用asp.net代码实现分页功能 连接到sql server 数据库中
ASP.NET的话,直接拖个gridview和datasource,数据绑定一下。控件上面设置个要分页。一行代码也不用写啊。