“今日恐丑”通过精心收集,向本站投稿了14篇DataGrid分页使用小结,这次小编给大家整理后的DataGrid分页使用小结,供大家阅读参考,也相信能帮助到您。
- 目录
- 第1篇:DataGrid分页使用小结第2篇:DB2排序分页小结第3篇:word文档中分页符怎么使用第4篇:word文档中分页符怎么使用第5篇:Oracle SQl语句使用rownum分页第6篇:ActionScript数组使用小结第7篇:LUA string库使用小结第8篇:使用 PHP 读取(TXT)文件 并分页显示第9篇:如何对WORD跨页表格使用分页符第10篇:python使用BeautifulSoup分页网页中超链接的方法第11篇:Shell中的变量使用小结第12篇:存储过程分页又一方法(使用table变量)(摘)数据库教程第13篇:解决oracle使用rownum排序分页排序字段不唯一导致分页错误第14篇:关于IBM DB2数据库的使用小技巧小结
篇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篇)




