DataGrid分页使用小结

时间:2022-11-29 17:36:20 作者:今日恐丑 综合材料 收藏本文 下载本文

“今日恐丑”通过精心收集,向本站投稿了14篇DataGrid分页使用小结,这次小编给大家整理后的DataGrid分页使用小结,供大家阅读参考,也相信能帮助到您。

篇1:DataGrid分页使用小结

默认分页模式:

选中“允许分页”;页大小;页导航设置,可以是上下方式,也可以用页码方式

格式里可以设置“页导航”按钮的对起方式;

private void datashow//绑定数据

{

string sql=“server=127.0.0.1;database=ltp;user id=sa;password=”;

SqlConnection mycon=new SqlConnection(sql);

string selsql=“select * from data”;

SqlDataAdapter da=new SqlDataAdapter(selsql,mycon);

DataSet ds=new DataSet();

da.Fill(ds,“data”);

this.DataGrid1.DataSource=ds.Tables[“data”];

this.DataGrid1.DataBind();

}

响应事件 PageIndexChanged()

this.DataGrid1.CurrentPageIndex=e.NewPageIndex;

datashow();

自定义导航控件的默认分页模式

当前页:this.Label1.Text=(this.DataGrid1.CurrentPageIndex+1).ToString();

因为CurrentPageIndex从0开始的,所以要+1

总页数:this.Label2.Text=this.DataGrid1.PageCount.ToString();

//第一页

this.DataGrid1.CurrentPageIndex=0;

//上一页

if(this.DataGrid1.CurrentPageIndex>0)

{

this.DataGrid1.CurrentPageIndex-=1;

this.datashow();

}

//下一页

if(this.DataGrid1.CurrentPageIndex<(this.DataGrid1.PageCount-1))

{

this.DataGrid1.CurrentPageIndex+=1;

this.datashow();

}

//最后一页

this.DataGrid1.CurrentPageIndex=this.DataGrid1.PageCount-1

最后再 datashow();

自定义数据分页--非常重要!(提高性能效率)

每次this.datashow();是提取全部数据,反而降低了效率,

正确的方法:

1,选中“允许分页”;“允许自定义分页”;页大小。

2,添加导航按钮,设置CommandName属性,previous,next

3,代码:

//记录每一页的开始索引

int startindex;

private void Page_Load(object sender, System.EventArgs e)

{

//自定义按钮事件

this.btnprevious.Click+=new System.EventHandler(this.NavigateToPage);

this.btnnext.Click+=new System.EventHandler(this.NavigateToPage);

//or nCommand=“NavigateToPage”

if(!IsPostBack)

{

startindex=0;

//得到数据源的记录数,并指派给DataGrid1

string constr=“server=127.0.0.1;database=ltp;user id=sa;password=”;

SqlConnection mycon=new SqlConnection(constr);

mycon.Open();

string sql=“select 总数=count(*) from data”;

SqlCommand com=new SqlCommand(sql,mycon);

SqlDataReader dr=com.ExecuteReader(CommandBehavior.SingleRow);

if(dr.Read())

this.DataGrid1.VirtualItemCount=(int)dr[“总数”];

dr.Close();

mycon.Close();

//

this.bindGrid(startindex,“previous”);

}

}

//自定义按钮事件

private void NavigateToPage(object sender,System.EventArgs e)

{

string pageinfo=((Button)sender).CommandName;

switch(pageinfo)

{

case “previous”:

if(this.DataGrid1.CurrentPageIndex>0)

{

this.DataGrid1.CurrentPageIndex-=1;

}

break;

case “next”:

if(this.DataGrid1.CurrentPageIndex<(this.DataGrid1.PageCount-1))

{

this.DataGrid1.CurrentPageIndex+=1;

}

break;

}

//得到开始的索引

startindex=this.DataGrid1.CurrentPageIndex*this.DataGrid1.PageSize;

//重新绑定

this.bindGrid(startindex,pageinfo);

}

//从数据源提取所需的数据记录--方法2(有int序号的表)

private void bindGrid2(int startindex,string pageinfo)

{

string constr=“server=127.0.0.1;database=ltp;user id=sa;password=”;

SqlConnection mycon=new SqlConnection(constr);

mycon.Open();

string sql=“select top 5 * from data where 序号>=”+startindex+“ order by 序号”;

SqlDataAdapter da=new SqlDataAdapter(sql,mycon);

DataSet ds=new DataSet();

da.Fill(ds,“data”);

this.DataGrid1.DataSource=ds.Tables[“data”];

this.DataGrid1.DataBind();

mycon.Close();

}

//从数据源提取所需的数据记录--方法1(按某字符串列排序的)

private void bindGrid(int startindex,string pageinfo)

{

string constr=“server=127.0.0.1;database=ltp;user id=sa;password=”;

SqlConnection mycon=new SqlConnection(constr);

mycon.Open();

SqlCommand com=new SqlCommand();

switch(pageinfo)

{

case “previous”:

string sql=“select top 5 * from data where 持股名称>=@id order by 持股名称”;

com=new SqlCommand(sql,mycon);

// com=new SqlCommand(“select top 5 * from data where 持股名称>=@id order by 持股名称”,mycon);

if(startindex==0)

{

com.Parameters.Add(“@id”,SqlDbType.NVarChar,10).Value=“”;

}

else

{

//把开始

com.Parameters.Add(“@id”,SqlDbType.NVarChar,10).Value=ViewState[(this.DataGrid1.CurrentPageIndex+1).ToString()];

// com.Parameters.Add(“@id”,SqlDbType.NVarChar,10).Value=this.DataGrid1.Items[0].Cells开始

com.Parameters.Add(“@id”,SqlDbType.NVarChar,10).Value=this.DataGrid1.Items[4].Cells[1].Text;

break;

}

SqlDataReader dr=com.ExecuteReader();

this.DataGrid1.DataSource=dr;

this.DataGrid1.DataBind();

dr.Close();

mycon.Close();

//重新得到当前开始第一行的列值

ViewState[(this.DataGrid1.CurrentPageIndex+1).ToString()]=this.DataGrid1.Items[0].Cells[1].Text;

}

篇2:DB2排序分页小结

最开始是这样写的:

SELECT *

FROM (SELECT row_number () OVER () AS rown, CC_BRAND.*

FROM CC_BRAND

ORDER BY CC_BRAND.BRAND_CODE) AS A

WHERE a.ROWN >= 1 AND a.ROWN <= 10;

我的思路是这样的:

我把第一种分页SQL中红色标注部分的运行结果当做一个结果视图,然后再对它里面的ROWN字段进行有选择查询

我感觉这是没有任务问题的,但结果却是错误的。不解呀

运行红色标注部分,运行完全正确,但全部运行就不对了,排序错乱了,和红色标注部分的排序结果完全不一样,很让我不解,

最后在网上查找了“排序分布”的例子,修改一下就好了 --

如下:

SELECT *

FROM (SELECT row_number () OVER (ORDER BY CC_BRAND.BRAND_CODE) AS rown,

CC_BRAND.*

FROM CC_BRAND) AS A

WHERE a.ROWN >= 1 AND a.ROWN <= 10;

蓝色标注部分就是不一样的地方,要把排序放在over后面的括号里面,

这样才能正确排序分页,

作者 jvortex

篇3:word文档中分页符怎么使用

打开Word2010文档,将光标移动到目标位置。

打开“页面布局”选项卡。

在“页面设置”中单击“分隔符”按钮。

在“分隔符”列表中选择“分页符”选项。

篇4:word文档中分页符怎么使用

打开Word2010文档窗口,将光标移动到目标位置。

单击“插入”选项卡。

在“页”中单击“分页”按钮即可在光标位置插入分页符标记。

篇5:Oracle SQl语句使用rownum分页

ROWNUM:

说明:rownum是一个伪字段,标示查询字段的序号;

使用:select rownum 序号 from table

注意:

一、rownum 使用 '>' 号的问题

select * from emp where rownum>3、

查询不到结果

原因:rownum是在使用select查询的时候,自动生成的一串顺序号,

在每返回一条数据结果的时候,rownum就自动加一

当select 一条数据 rownum 为 1 不>3 记录被筛去

而下一条 数据 rownum 又是 1.。。。。。。。

解决:加一层嵌套

二、rownum 与 order by 同时使用会出现问题

rownum 是不支持order by 排序的。因为rownum是在排序之前取值的。

“在oracle中如果rownum与order by同在,是先rownum,然后再order by ”

oracle手册上说的:“即使select语句中一条简单的order by都可能会搞乱ROWNUM(因为ROWNUM是排序前分配给各行的)

如图所示:(RN 列顺序错误)

解决方式:

1、直接嵌套:(增加了两次查询,被嵌套的查询结果相当于视图,view中已经有rownum字段 所以可以使用 >号)

select t2.* from(--解决>号问题

select t1.*,ROWNUM rn from (--解决order by 的影响

select

k.bmxh,

k.byxxdm,

z.zgdm,

z.dqdm,

zd.zgmc,

zd.fz

from zgjf z

left join ks k on z.bmxh = k.bmxh

left join zgdm zd on z.zgdm = zd.zgdm

order by bmxh asc, z.zgdm asc

)t1

)t2where rn >2 and rn <10

2、使用:row_number over(order by COLUMN_NAME) 改变顺序,先执行了括号中的order by

select z.* ,row_number() over ( order by z.bmxh ) rn from zgjf z where rownum <10 and rownum >5

篇6:ActionScript数组使用小结

数组

本文节选自本人最近在制作的AS2语法研究报告,供AS爱好者交流,学习,

ActionScript数组使用小结

哪里说得不对或不当,还请指正,谢谢.

数组:

AS2里的数组类型有两个比较牛的地方:

1)数组对象自身可以存放任何数据类型,而不是如C++中的int a[2],char a[3],someClass a[3].

当然,坏处也立刻突现了出来,无法直接创建对象数组。

2)完全的动态数组,使用非常简单,有点像Vector,但同时也更易用出错。这里的动态指的是数组边界的大小(当然,维数还是要声明好的)。

下面是关于数组类型的一些个人认为比较重要点的小结,一些旁枝性的东东都略去了,

哪里少讲了或讲错了什么的话请务必帮我指出一下,大家共同提高:

1

以下声明错误:

var a[1]:Array=new Array();

function test(arr[]:Array):Void

2声明方式1(注,这里的声明方式全部使用强类型声明方式)

var a:Array=new Array();

a[0]=0;

a[1]=1;

trace(a);

//Output

0,1

3声明方式2

var a:Array=new Array(4);

a[4]=1;

trace(a);

//Output

undefined,undefined,undefined,undefined,1

解释:动态数组,用a[4]后长度自动变成5。

4声明方式3

4.1

var b:Array=new Array(0,1,2,3);

trace(b);

0,1,2,3

4.2并不支持这种形式的二维数组的嵌套定义

var b:Array=new Array((1,2),(3,4),(5,6));

trace(b);

trace(b[0]+“ ”+b[1]+“ ”+b[2]+“ ”+b[3]);

trace(b[0][0]);

2,4,6

2 4 6 undefined

undefined

5用[]取代了C++中的{};

声明方式4

var b:Array=[[1,2],[3,4],[5,6]];

trace(b);

trace(b[0]+“ ”+b[1]+“ ”+b[2]+“ ”+b[3]);

trace(b[0][0]);

1,2,3,4,5,6

1,2 3,4 5,6 undefined//用b[0]输出了一个数组行.

1

6二维的维数设定同样是动态的:

var b:Array=[[1,2],[3,4],[5,6]];

b[2][3]=12;

trace(b[2][3]);

//Output

12

7其它的二维数组声明方式:

7.1通过行首参数设定相应的列数.

//

2*3 Array Declare.

var gRowIndex:Number=2;

var gColIndex:Number=3;

var a:Array=new Array(gRowIndex);

for (var i=0;i

{ a[i]=new Array(gColIndex);

for (var j=0;j

{

a[i][j]=String(i)+String(j);

}

}

trace(a);

//Output

00,01,02,10,11,12

8数组作函数为参数的传递.

8.1

var b:Array=new Array(0,1,2,3);

function test(arr:Array):Void

{

trace(arr[0]+“ ”+arr[1]+“ ”+arr[2]+“ ”+arr[3]+“ ”);

}

test(b);

0 1 2 3

8.2

二维数组:

var b:Array=[[1,2],[3,4],[5,6]];

function test(arr:Array):Void

{

trace(arr);

trace(arr[0]+“ ”+arr[1]+“ ”+arr[2]+“ ”+arr[3]+“ ”);

}

test(b);

1,2,3,4,5,6

1,2 3,4 5,6 undefined

8.3

行首参数的传递:

var b:Array=[[1,2],[3,4],[5,6]];

function test(arr:Array):Void

{

trace(arr);

trace(arr[0]+“ ”+arr[1]+“ ”);

}

test(b[0]);

test(b[1]);

test(b[2]);

1,2

1 2

3,4

3 4

5,6

5 6

9更多:

9.1

var gRowIndex:Number=2;

var gColIndex:Number=3;

var a:Array=[[0,1],[3,4,5]];//某个位置空缺某个元素,这里为[0][2]

trace(a);

for (var i=0;i

{

for (var j=0;j

{

trace(a[i][j]);

}

}

0,1,3,4,5

0

1

undefined

3

4

5

9.2动态维数并不支持

var b:Array=[5,6];

b[0][0]=3;

trace(b[0][0]);

//Output

undefined,

9.3一个间接对象数组实现的例子.

var enArray=new Array(3);

// ------ 连接到ENEMY数组 --------- //

for(var j=0;j<3;j++){

attachMovie(“baddie”, “baddie”+j, 200+j);

enArray[j] = _root[“baddie”+j];

enArray[j]._x = 50*j;

enArray[j]._y = 100;

}

9.4

还有很多实际中用得到的例子,比方说,用array 来保存颜色数据,加载图片的变量名等等。

10删除数组元素:

10.1一维:

var p=new Array(1,2,3,4,5);

p.splice(1);

trace(p);

var t=new Array(1,2,3,4,5);

t.splice(2,1);

trace(t);

//Output

1

1,2,4,5

10.2二维情况:

var b:Array=[[1,2],[3,4],[5,6]];

b[0].splice(0);//delete c[0][0] c[0][1]

trace(b);

var c:Array=[[1,2],[3,4],[5,6]];

c[1].splice(1);//c[1][1]

trace(c);

,3,4,5,6

1,2,3,5,6

11长度测试:

var b:Array=[[1,2,2],[3,4],[5,6,4,5]];

trace(b.length);

trace(b[0].length);

trace(b[2].length);

//Output

3

3

4

=========================================================

一个月后的补充:

11动态维数:跟JAVA中一样的.

var arr:Array=new Array(1);

arr[0]=new Array(3);

arr[0][0]=1;

arr[0][1]=2;

arr[0][2]=3;

trace(arr);

trace(arr[0][0]);

trace(arr[0][1]);

trace(arr[0][2]);

1,2,3

1

2

12加载数据的新方式(多重属性):

mData=new Array();

mData.addItem({ label: “二球动量守恒(一维)” ,data:0});

mData.addItem({ label: “三球动量守恒(一维)” ,data:1});

mData.addItem({ label: “多球平面碰撞(二维)”,data:2});

mData.addItem({ label: “子母球”,data:3});

用于配合V2Component中的ComboBox的使用:

_root.menuCombo.dataProvider=mData;

篇7:LUA string库使用小结

这篇文章主要介绍了LUA string库使用小结,本文总结了简单的模式串、格式化的模式串、模式串中的特殊字符、用‘[]‘创建字符集、在‘[]‘中使用连字符‘-‘等内容,需要的朋友可以参考下

1. string库中所有的字符索引从前往后是1,2,...;从后往前是-1,-2,...

2. string库中所有的function都不会直接操作字符串,而是返回一个结果

代码如下:

s = “[abc]”

string.len(s)       <==返回5

string.rep(“abc”, 2) <==返回“abcabc”

string.lower(“ABC”) <==返回“abc”

string.upper(“abc”) <==返回“ABC”

string.sub(s, 2)    <==返回“abc]”

string.sub(s, -2)   <==返回“c]”

string.sub(s, 2, -2) <==返回“abc”

string.format(fmt, ...)返回一个类似printf的格式化字符串

string.find(s, pattern, pos)

第1个参数:源字符串

第2个参数:待搜索之模式串

第3个参数:A hint, 从pos位置开始搜索

找到匹配返回:匹配串开始和结束的位置,否则返回nil

简单的模式串:

代码如下:

s = “hello world”

i, j = string.find(s, “hello”)

print(i, j) -->1 5

print(string.sub(s, i, j)) -->hello

print(string.find(s, “world”)) -->7 11

i, j = string.find(s, “l”)

print(i, j) -->3 3

print(string.find(s, “lll”)) -->nil

格式化的模式串:

代码如下:

s = “Deadline is 30/05/1999, firm”

date = “%d%d/%d%d/%d%d%d%d”

print(string.sub(s, string.find(s, date))) -->30/05/1999

下面的表列出了Lua支持的所有字符类:

代码如下:

. 任意字符

%s 空白符

%p 标点字符

%c 控制字符

%d 数字

%x 十六进制数字

%z 代表0的字符

%a 字母

%l 小写字母

%u 大写字母

%w 字母和数字

上面字符类的大写形式表示小写所代表的集合的补集,例如,‘%A‘非字母的字符:

模式串中的特殊字符:

代码如下:

( ) . % + - * ? [ ^ $

‘%‘ 用作特殊字符的转义字符

‘%.‘ 匹配点;

‘%%‘ 匹配字符 ‘%‘。

转义字符 ‘%‘不仅可以用来转义特殊字符,还可以用于所有的非字母的字符。当对一个字符有疑问的时候,为安全起见请使用转义字符转义他。

用‘[]‘创建字符集:

代码如下:

‘[%w_]‘ 匹配字母数字和下划线

‘[01]‘ 匹配二进制数字

‘[%[%]]‘匹配一对方括号

在‘[]‘中使用连字符‘-‘:

代码如下:

‘%d‘   表示 ‘[0-9]‘;

‘%x‘   表示 ‘[0-9a-fA-F]‘

‘[0-7]‘ 表示 ‘[01234567]‘

在‘[]‘开始处使用 ‘^‘ 表示其补集:

代码如下:

‘[^0-7]‘ 匹配任何不是八进制数字的字符;

‘[^n]‘ 匹配任何非换行符户的字符,

‘[^%s]‘ == ‘%S‘

模式修饰符:

代码如下:

+ 匹配前一字符1次或多次

* 匹配前一字符0次或多次;最长匹配

- 匹配前一字符0次或多次;最短匹配

? 匹配前一字符0次或1次

^ 匹配字符串开头

$ 匹配字符串结尾

捕获:用将要捕获的部分包围起来:

代码如下:

pair = “name = Anna”

firstidx, lastidx, key, value = string.find(pair, “(%a+)%s*=%s*(%a+)”)

print(key, value) <== name Anna

拷贝捕获(%1-%9):

代码如下:

s = “abc ”it‘s a cat“”

_,_,_,q = string.find(s, “([”‘])(.-)%1“))

print(q) <== it‘s a cat 如果%d代表第几个捕获的拷贝。

string.gsub(s, pattern, reps)

第1个参数:源字符串

第2个参数:待替换之模式串

第3个参数:替换为reps

将s中所有符合pattern的字串替换为reps,返回结果串+匹配数:

代码如下:

print(string.gsub(”hello, world“, ”o“, ”a“))      <== hella, warld       2

gsub也可以用拷贝捕获技巧

代码如下:

print(string.gsub(”hello, world“, ”(o)“, ”%1-%1“)) <== hello-o, wo-orld   2

print(string.gsub(”hello Lua“, ”(.)(.)“, ”%2%1“)) <== ehll ouLa          4

function trim (s) return (string.gsub(s, ”^%s*(.-)%s*$“, ”%1“)) end <== 注意匹配数用括号丢弃

string.gsub(s, pattern, func)

第3个参数:自定义函数,对找到的匹配操作,并传出替换值:

代码如下:

s, n = string.gsub(”hello world“, ”l+“, function(s) return ”xxx“ end)

print(s, n) <== hexxxo worxxxd 2

string.gfind(s, pattern)

返回一个迭代器,迭代器每执行一次,返回下一个匹配串:

代码如下:

iter = string.gfind(”a=b c=d“, ”[^%s+]=[^%s+]“)

print(iter()) <== a=b

print(iter()) <== c=d

通常用于泛性for循环,下面的例子结果同上:

代码如下:

for s in string.gfind(”a=b c=d“, ”[^%s+]=[^%s+]“) do

print(s)

end

篇8:使用 PHP 读取(TXT)文件 并分页显示

[PHP]代码

view source

print?

01

02session_start();

03if (empty($page)) {$page=1;}

04if (isset($_GET['page'])==TRUE) {$page=$_GET['page']; }

05?>

06

07

08

09www.qqview.com-Read Result

10

16

17

18

19

20

21

22if($page){

23$counter=file_get_contents(”example.txt“); //-------read the file into a string.-------

24$length=strlen($counter);

25$page_count=ceil($length/5000);

26

27function msubstr($str,$start,$len){

28$strlength=$start+$len;

29$tmpstr=”“;

30for($i=0;$i<$strlength;$i++) {

31if(ord(substr($str,$i,1))==0x0a) {

32$tmpstr.='

';

33}

34if(ord(substr($str,$i,1))>0xa0) {

35$tmpstr.=substr($str,$i,2);

36$i++;

37}

38else{

39$tmpstr.=substr($str,$i,1); }

40}

41return $tmpstr;

42}

43//--------------------------截取中文字符串--------------------------

篇9:如何对WORD跨页表格使用分页符

朋友托我为他的WORD文档设置页眉页脚,这篇WORD文档不是普通的正文,而是文字与表格混排的文档,我觉得没有什么大问题,就帮他做。

可是在表格的地方遇到了麻烦事,按他的要求,表格的第一页是没有页眉页脚的,而他文章里的所有表格都是跨页的,最少的也是跨了两页,

在使用WORD分页符时怎么也分不了。而文字部分则没的这种问题。后来最终弄清了如何在表格中使用分页符。

当WORD中一个表格需要跨页的时候,将表格拆分成两栏,在表格中的文字部分单击鼠标右键,选择拆分单元格,选择一列两栏,确定后会在已有的表格下面生成新的一栏,然后在下面那栏的第一个回车处使用分页符,使之与上面的表格分离并自动分到下一页去,然后再向表格中粘贴文字。再分页以便设置页眉页脚。

篇10:python使用BeautifulSoup分页网页中超链接的方法

作者:令狐不聪 字体:[增加 减小] 类型:转载

这篇文章主要介绍了python使用BeautifulSoup分页网页中超链接的方法,涉及Python使用BeautifulSoup模块操作网页链接的技巧,需要的朋友可以参考下

本文实例讲述了python使用BeautifulSoup分页网页中超链接的方法,分享给大家供大家参考。具体如下:

python通过BeautifulSoup分页网页中的超级链接,这段python代码输出www.jb51.net主页上所有包含了jb51的url链接

from BeautifulSoup import BeautifulSoupimport urllib2import reurl = urllib2.urlopen(”www.jb51.net“)content = url.readsoup = BeautifulSoup(content)for a in soup.findAll(‘a‘,href=True): if re.findall(‘sharejs‘, a[‘href‘]): print ”Found the URL:“, a[‘href‘]

希望本文所述对大家的Python程序设计有所帮助,

篇11:Shell中的变量使用小结

这篇文章主要介绍了Shell中的变量使用小结,本文总结了变量的语法、常见使用形式等内容,并分别给出代码示例,需要的朋友可以参考下

变量的定义,只能以字母和下划线开始,区分大小写,可以包含数字 字母下划线.详见官方手册

代码如下:

[root@svn shell_example]# yourname=‘Linux‘

[root@svn shell_example]# echo $yourname

Linux

[root@svn shell_example]# YourName=”linux“

[root@svn shell_example]# echo ”The variable is $YourName“

The variable is linux

获取当前日期的脚本,常用在日志切割中,为了区分每天的日志文件

如下 生成4月27日

代码如下:

[root@svn shell_example]# echo `date +%Y%m%d`

20150427

[root@svn shell_example]# cat today.sh

#!/bin/bash

TODAY=`date +%A`

YEAR=`date +%Y年%m月%d日`

echo ”今天是 $YEAR, $TODAY“

[root@svn shell_example]# sh today.sh

今天是 2004月27日, 星期一

从键盘获取用户的输入,如下脚本执行后脚本直接等待用过户输入,直到用户输入完成 并回车,脚本获取到用户的输入并将结果打印出来.

代码如下:

[root@svn shell_example]# cat var.sh

#!/bin/bash

read myvar

echo ”myvar is $myvar

执行结果如下

[root@svn shell_example]# sh var.sh

Linux

myvar is Linux

[/code]

带提示信息的从键盘获取用户输入

代码如下:

#!/bin/bash

#从键盘获取用户信息,并打印出来.

echo -n ‘Enter Your Name:‘   #-n 选项表示不换行.

read name

echo “Hi $name”

sh name.sh

Enter Your Name:linux

Hi linux

升级版脚本,此脚本成功的接受了用户的2个参数 姓和名字,并将输入打印在屏幕上

代码内容如下

代码如下:

[root@svn shell_example]# cat firstname.sh

#!/bin/bash

pw=“123”

echo

echo “+========用户登录=========+”

echo

echo -n “请输入您的用户名: ”

read fname lname

echo -n “请输入您的密码: ”

read passwd

echo “尊敬的会员$fname $lname,您好!您已登录成功”

[root@svn shell_example]# sh firstname.sh

+========用户登录=========+

请输入您的用户名: 纳斯 李

请输入您的密码: 123

尊敬的会员纳斯 李,您好!您已登录成功

篇12:存储过程分页又一方法(使用table变量)(摘)数据库教程

变量|存储过程|分页

要创建一个返回指定条记录结果的存储过程,首先必须指定返回结果集的条记录数,可以用临时表,也可以用table变量(SQL Server 2000),两个在性能上没有太大的差别,但是,table变量是存储在内存中的,如果你的服务器内存不多的话,可以考虑用临时表,临时表使用硬盘存储结果,临时表需要手工释放对象,而table变量在存储过程结束后自动释放,

存储过程分页又一方法(使用table变量)(摘)数据库教程

下面就是我们要创建的存储过程:

create proc GetAuthors

@Author_Last_Name as varchar(100) = null,

@StartRow as int = null,

@StopRow as int = null

AS

---- 建立有标识符列的table变量

declare @t_table table

(

[rownum] [int] IDENTITY (1, 1) Primary key NOT NULL ,

[Author_Last_Name] [varchar] (40) ,

[Author_First_Name] [varchar] (20) ,

[phone] [char] (12) ,

[address] [varchar] (40) ,

[city] [varchar] (20) ,

[state] [char] (2) ,

[zip] [char] (5)

)

---- 在返回指定的@StopRow行数之后停止处理查询

Set RowCount @StopRow

---- 插入到table变量中

insert @t_table

(

[Author_Last_Name],[Author_First_Name],[phone],[address],[city],[state],[zip]

)

SELECT [Author_Last_Name],[Author_First_Name],[phone],[address],[city],[state],[zip]

FROM authors

WHERE Author_Last_Name like '%' + @Author_Last_Name + '%'

ORDER BY Author_Last_Name

---- 返回到正确的结果

SELECT * FROM @t_table WHERE rownum >= @StartRow

ORDER BY rownum

GO

参数@StartRow和@StopRow接收整数值,代表要返回的开始记录和结束记录,如果要在一个25条记录的页面中返回第4页,我们就可以设置@StartRow为76,@StopRow为100,

我们在table变量@t_table中定义了一个叫rownum的整数类型的列,并指定为标识符列,这个列在我们这里介绍的分页技术中是很重要的,当我们插入数据时,这个列自动增加,它将在插入数据时起排序作用。SET ROWCOUNT语句对优化性能很关键,它告诉SQL Server进行限制要插入的数据,如果我们要76-100条记录之间的数据,那么就可以不必插入大于100条记录的数据。最后的SQL语句从@t_table的table变量选择rownum大于或者等于@StartRow的那些数据集,然后把它们返回到Web服务器,由Web服务器绑定到DataGrid对象。值得注意的是:如果要得到76到100条记录的数据,我们必须往table变量中插入100条记录的数据,这意味着:如果浏览者请求的页数越来越大,页面性能也会有所下降的。例如:要显示第100页的数据(从第2451条记录到第2500条记录),我们必须先向table变量或者临时表填充2500条记录,因此,性能依赖于你计算机的硬件和你要返回的记录数,有测试表明,在SQL Server 2000中使用这样的存储过程平均在200-250毫秒内返回第100页,而返回第一页只需要4毫秒。即使返回第500页的数据(从第12451到12500条记录)也可以在650到750毫秒内完成。应该说这种情况是很少见到的。 但为了减轻数据库和网络传输的压力,设计合理的查询结果页数是很见效的。

摘自dotnet.aspx.cc/ShowDetail.aspx?id=108B1516-53CE-4357-B061-17295AF9689F

篇13:解决oracle使用rownum排序分页排序字段不唯一导致分页错误

解决oracle使用rownum排序分页排序字段不唯一导致分页错误

最近在写个列表组件ulynlist时候,测了下发现了个问题,在此记录下,

今天,列表组件调的时候,我试了下调下每个条数,每页一条,刚完成分页脚的插件时候,很高兴的点着,突然点到10来条时候发现怎么一直都是那条数据,还以为是前端插件写的有问题。后面再去看了下控制台的sql,截出sql去执行,发现还真是,从9到13都是同一个记录。

1SELECT * FROM(SELECT A.*, ROWNUM RN FROM(2select t.* from T_CAR_INFO t WHERE t.del='0' AND t.id = '003'3 ORDER BY CREATE_TIME desc) A WHERE ROWNUM <= 10)WHERE RN >= 10

正常情况来说,这个sql是很难发现有什么问题,在一般情况下,我们小流量系统这个CREATE_TIME经常都是唯一的,所以嘛,确实很难发现,

我用 CREATE_TIMEDESC排序,但是这个字段的值由于是数据库记录自己随便填,都是复制粘贴,结果很多记录都是一样的值。这个是典型的order by字段值不唯一造成分页记录混乱

怎么解决呢? 其实很简单,只要在排序的时候加一个值唯一的字段的就可以了。最好是id。改成如下发现一切正常了:

1SELECT * FROM(SELECT A.*, ROWNUM RN FROM(2select t.* from T_CAR_INFO t WHERE t.del='0' AND t.id = '003'3 ORDER BY CREATE_TIME desc,id) A WHERE ROWNUM <= 10)WHERE RN >= 10

篇14:关于IBM DB2数据库的使用小技巧小结

1. 查看本地节点目录

命令窗口中输入:db2 list node directory

2. 编目一个TCP/IP节点

命令窗口:db2 catalog tcpip node remote server ostype

3. 取消节点编目

db2 uncatalog node

4. 查看系统数据库目录

db2 list database directory

5. 查看本地数据库目录

db2 list database directory on <盘符>

在本地数据库目录中有而系统数据库目录中没有的数据库不能访问,可以在控制中心中选中<数据库>右键单击选择添加,然后输入需要添加的数据库名称或者点击刷新按钮选择数据库,加入数据库后即可以访问,

关于IBM DB2数据库的使用小技巧小结

6. 编目数据库

db2 catalog database as at node

7. 取消数据库编目

db2 uncatalog database

8. 测试远程数据库的连接

db2 connect to user using

9. 设置默认模式

任何用户均可通过设置Current Schema专用寄存器为特定的数据库连接设置默认模式,初始默认值为当前会话用户的权限ID。

set schema =

可以由用户交互式的使用,也可在应用程序中使用,如果用Dynamicrules Bind选项绑定包,这个语句就没有作用。此语句不在事务控制之下。

10. 代码页的设置

在创建数据库时设置字符集

create database using codeset territory

例:

create database dbtest using codeset IBM-437 territory US

也可以设置整个数据库的代码页,在win2000/NT/xp中,在我的电脑-->属性-->高级-->环境变量中添加变量DB2CODEPAGE = ,例:DB2CODEPAGE = 437 或 DB2CODEPAGE = 1386。或者在IBM DB2命令窗口输入 db2set DB2CODEPAGE=1386,设置后需要重新启动DB2生效。

11. DB2低版本数据到高版本的迁移

先将低版本数据备份使用恢复功能导入高版本数据库,然后在命令窗口输入 db2 migrate database 。

12. 表名或模式中含有引号时访问表

命令窗口:db2 select * from “tabschema”.“tabname”

命令行处理器:db2=>select * from “tabschema”.“tabname”

13. 导出数据库的表结构生成DDL文件

命令窗口:db2look -d -e -c -o

14. 执行脚本文件

命令窗口:db2 -tvf

15. 代码页的转换

16. 获取当前DB2的版本

select * from sysibm.sysversions

17. DB2表的字段的修改限制?

只能修改VARCHAR2类型的并且只能增加不能减少

alter table alter column set data type varchar(SIZE)

18. 如何查看表的结构?

describe table

or

describe select * from .

19. 如何快速清除一个大表?

ALTER TABLE TABLE_NAME ACTIVE NOT LOGGED INITALLY WITH EMPTY TABLE

20. 如何查看数据库的存储过程?

SELECT * FROM SYSCAT.POCEDURES

21. 如何查看表的约束?

SELECT * FROM SYSCAT.CHECKS WHERE TABNAME =

22. 如何查看表的引用完整约束?

SELECT * FROM SYSCAT.REFERENCES WHERE TABNAME =

23. 如何知道BUFFERPOOLS状况?

select * from SYSCAT.BUFFERPOOLS

24. 如何在命令行下查看修改实例和数据库配置参数?

查看实例配置参数: db2 get dbm cfg

修改实例配置参数: db2 update dbm cfg using 参数名 新值

查看数据库配置参数: db2 get db cfg for

修改数据库配置参数: db2 update db cfg for using 参数名 新值

25. 如何修改缓冲区?

增加缓冲区: create bufferpool size [pagesize 4096] {[not] EXTENDED STORAGE}

修改缓冲区: alter bufferpool size {[not] EXTENDED STORAGE}

删除缓冲区: drop bufferpool

如果缓冲区大小设置为 -1 表示缓冲池的页面数目由数据库配置参数buffpage决定,

注意: 数据库配置参数buffpage仅对缓冲区大小设置为 -1 的缓冲池起作用。

26. 多个字段时如何不通过使用select子句使用in/not in

select * from tabschema.tabname where (colA, colB, colC) [not] in (values (valueA1, valueB1, valueC1), (valueA2, valueB2, valueC2), ...(valueAn, valueBn, valueCn))

27. 查看当前连接到数据库的应用

db2 list application [show detail]

28. 如何确认DB2数据库的一致性

db2dart /DB

/DB表示检查整个数据库的一致性

29. 测试SQL语句的性能

db2batch -d -f [-a userid/passwd] [-r ]

-r 选项表示将查询结果输出到一个文件中。

30. 导出某个表的数据

export to

如:导出用户表

export to c:user.ixf of ixf select * from user

31. 导入数据

import from

:导入用户表。导入时可以直接建立新表。如果有该表存在也可以用INSERT 插入,或者用UPDATE更新

import from c:user.ixf of ixf [Create/Insert into / update] tablename

一个分页存储过程代码

学年小结

年终小结

年终小结范文

使用保证书

医保卡怎么使用

毕业小结

师德小结

学年自我小结

军训小结

DataGrid分页使用小结(锦集14篇)

欢迎下载DOC格式的DataGrid分页使用小结,但愿能给您带来参考作用!
推荐度: 推荐 推荐 推荐 推荐 推荐
点击下载文档 文档为doc格式
点击下载本文文档