在项目开发过程中我们常会遇到这样的情况:往数据库中插入了一条新数据后,需要知道这条新数据的唯一标识,比如ID 

1.Oracle

int id = MyDB.ExecSql("select TableName_seq.nextval from dual");  //表TableName的序列TableName_seq
string sqlStr = String.Format(" insert into TableName(id,A,B) values('{0}','{1}','{2}') ", id, a, b);
//。。。。。。
myCmd.ExecuteNonQuery();

对于oracle直接读取相应的序列就可以了,我之前还以为会产生冲突,后来才发现是自己对序列的机制不太了解。
值得注意的是:不管新数据插入成功与否,得到的都是这次操作准备插入的ID值,所以获取值之前最好判断一下插入成功了没有。

 

2.SQL Server

SqlConnection myConn = new SqlConnection();
myConn.ConnectionString 
= connStr;
myConn.Open();

SqlCommand myCmd 
= myConn.CreateCommand();
string sqlStr = String.Format("insert into table(A,B) values('{0}','{1}');", a, b);
sqlStr 
+= "select  SCOPE_IDENTITY();";

string newID = "";
try
{
     SqlTransaction myTran 
= myConn.BeginTransaction();
     myCmd.Transaction 
= myTran;
     myCmd.CommandText 
= sqlStr;
     newID 
= myCmd.ExecuteScalar().ToString();
     myTran.Commit();
}
catch (Exception ex)
{
     myTran.Rollback();
}

这里面主要用到了事务和IDENT_CURRENT,IDENT_CURRENT 类似于 SQL Server 2000 标识函数 SCOPE_IDENTITY
和 @@IDENTITY。这三个函数都返回最后生成的标识值。但是,上述每个函数中定义的“最后”的作用域和会话有所不同。 

 ▪ IDENT_CURRENT         返回为任何会话和任何作用域中的特定表最后生成的标识值。
 ▪ @@IDENTITY              返回为当前会话的所有作用域中的任何表最后生成的标识值。
 ▪ SCOPE_IDENTITY        返回为当前会话和当前作用域中的任何表最后生成的标识值。
 

例如,有两个表 Table1 和 Table2,在 Table1 上定义了一个 INSERT 触发器。当将某行插入 Table1 时,触发器被激发,
并在 Table2 中插入一行。这里有两个作用域:一个是在 Table1 上的插入,另一个是作为由于触发器的结果原因在 Table2
上的插入。如果我们不考虑多会话的情况,在Table1中插入一条数据,那么: 

select SCOPE_IDENTITY();             --返回插入Table1 中的 IDENTITY 值
select @@IDENTITY ;                    --返回插入Table2 中的 IDENTITY 值
select IDENT_CURRENT ('Table1');  -- 返回Table1 最后生成的 IDENTITY 值
select IDENT_CURRENT ('Table2');  -- 返回Table2 最后生成的 IDENTITY 值

 

PS:在 SQL Server2005 中有更简单的方法:   insert into TableName(A,B) output inserted.id values('a','b');

 

posted @ 2008-11-20 15:59 baiyicug 阅读(370) 评论(5) 编辑

功能简介:

(1)可以访问并修改页面元素的相关属性(css,内容,事件等)
(2)与服务器异步交互。jQuery 也提供了一整套Ajax 相关的操作,大大方便了异步交互的开发和使用。
(3)为页面添加动画。通常在页面中添加动画都需要开发大量的JavaScript 代码,而jQuery大大简化了这个过程。jQuery 的库提
    供了大量可自定义参数的动画效果。
(4)简化常用的JavaScript 操作。jQuery 还提供了很多附加的功能来简化常用的JavaScript操作,例如数组的操作、迭代运算等。


JQuery优点

▪ 体积小(v1.2.3 15kb)
▪ 丰富的DOM选择器(CSS1-3 + XPath)
▪ 跨浏览器(IE6,FF,Safari,Opera)
▪ 链式代码
▪ 强大的事件、样式支持
▪ 强大的AJAX功能
▪ 易于扩展,插件丰富

 

代码风格: 

$(document).ready(function() {
      
//为页面上的每一个链接添加一个点击事件
      $("a").click(function() {
            alert(
"Hello world!");
      });

      
//为ID为orderedlist的元素添加red样式
      $("#orderedlist").addClass("red");
});

  

1.关于DOM元素的获取

$("#p"):  ID为p的一个元素,相当于JavaScript里的document.getElementById("p")
$(".p"):   所有样式名为p的元素,返回的是一个元素集
$("p"):    所有HTML标签为p的元素,返回的是一个元素集 

jQuery的选择符支持id,tagName,css1-3 expressions,XPath;
除此之外,还可以根据DOM元素的父子关系,内容,属性,位置等相关信息进行筛选,
也可以在获得的元素集上进一步筛选,具体功能参见API文档(中文英文)


2.修改设置元素的属性、样式及DOM处理

html(),html(val)        text(),text(val)         val(),val(val)
height(),height(val)   width(),width(val)
相信从字面上就能知道他们的意思了

此外jQuery还提供了强大的方法来方便我们操作DOM对象,详细说明请见API文档


3.事件

对于JavaScript里的onXXX事件(如onclick,onchange,onsubmit等),在jQuery里都有对应的表示方法,只是
jQuery不喜欢onXXX,所以都改成了XXX,去掉了on。其他的一些事件,如ready和hover,也提供了相应的方法。

//JavaScript:  
obj.onclick=function(){alert('hello!');}
//jQuery:      
$("#id").click(function(){alert('hello!');});


4.Ajax

(1)通用方式:
$.ajax(prop)  通过一个ajax请求,获取远程数据,prop是一个hash表,它可以传递的key/value有以下几种。

   (String)type:数据传递方式(get或post)。
   ((String)url:数据请求页面的url
   ((String)data:传递数据的参数字符串,只适合post方式
   ((String)dataType:期待数据返回的数据格式(例如 "xml", "html", "script",或 "json")
   ((Boolean)ifModified: 当最后一次请求的相应有变化是才成功返回,默认值是false
   ((Number)timeout:设置时间延迟请求的时间。可以参考$.ajaxTimeout
   ((Boolean)global:是否为当前请求触发ajax全局事件,默认为true
   ((Function)error:当请求失败时触发的函数。
   ((Function)success:当请求成功时触发函数
   ((Function)complete:当请求完成后出发函数


相关代码

$.ajax({url: "ajax.htm",
          success:
function(msg){ 
                         $(
"#a").html(msg);
                } 
    });   
//将ajax.htm返回的内容作为id为a的div内容 


$.ajax({ url: "ajax.aspx",
              type:
"get",           
             dataType:
"html",
             data: 
"name=John&location=Boston",
             success:
function(msg){ 
                                 $(
"#a").html(msg);
                              } 
         });  
//用get方式向ajax.aspx页面传参数,并将返回内容负给id为a的对象。


(2)简化方式:
$.get(url, params, callback)  用get方式向远程页面传递参数,请求完成后处理函数,除了url外,其它参数任意选择!
$.post(url, params, callback)  用post方式向远程页面传递参数,请求完成后处理函数callback

$.get( "ajax.htm" , function(data){ $("#a").html(data)  });


$.post(  
"ajax.asp"
         { name: 
"young", age: "25" },
         
function(data){ alert("Data Loaded: " + data); }
      );


5.动画

hide(), show()  显示/隐藏对象;  toggle() 切换元素的可见状态。
slideDown,  slideUp,  slideToggle  通过高度变化显示/隐藏对象,切换元素的可见状态,即垂直方向上的滑动效果。
fadeIn, fadeOut, fadeTo  淡入淡出效果
animate 自定义动画效果

详细使用说明请参考API文档


 

jQuery官方API文档:
中文:http://jquery-api-zh-cn.googlecode.com/svn/trunk/index.html
英文:http://docs.jquery.com/Main_Page
其他一些参考文档:
http://www.k99k.com/jQuery_getting_started.html
http://thinhunan.cnblogs.com/archive/2008/03/05/1091816.html
http://wiki.jquery.org.cn/doku.php
http://www.cnblogs.com/skylaugh/archive/2006/12/18/595563.html

posted @ 2008-11-14 18:06 baiyicug 阅读(394) 评论(2) 编辑

sql语句长度超过限制,一般有两种情况:

1.字段的值过长,比如新闻的内容等

解决办法:

declare a clob:='超长值';
begin
insert into TABLE( 字段名 ) values(a);
end;

当然该字段要设成clob类型的

 

2.动态生成sql语句时整体超过长度限制,比如“ in (‘1’,‘2’,。。。,‘n’)”,当然不只是这一种情况;

我最近就碰到了这种情况,错误提示: ORA-01795: 列表中的最大表达式数为 1000

google一下才知道原来in语句里的数据量不能大于1000条;

最好的解决办法就是优化sql语句,尽量不要产生超长的sql语句。

 

PS:

这种sql语句长度有限制的问题好像只有Oracle里才会发生,
SQL2000查询分析器里sql语句有64K的限制,但是程序里超过限制的sql语句还是可以执行的
而SQL2005(Express版本)没有此限制

 

类似sql语句超长的问题好像还有很多,也似乎很复杂,还请高手们多多指教。

posted @ 2008-09-18 17:19 baiyicug 阅读(1782) 评论(2) 编辑

response.redirect 其实是当服务器碰到这条语句时发送一条指令(包含新的地址)给浏览器,然后让浏览器去发送http请求,请求那个新的地址,流程如下:


  浏览器ASP文件请求->服务器执行->遇到response.redirect语句->服务器发送response.redirect后面的地址给客户机端的浏览器->浏览器请求执行新的地址(服务器返回的Response.Redirect后面的地址) 

PS: ASP.net里面用Response.Redirect跳转,PHP里面是Header("Location",$URL);这两种方式都是一样的原理,就是在输出的HTTP头里面加上一个Location字段,值为要跳转的目的地址,同时把返回的HTTP状态值设为302。

 

Server.Transfer 语句当接受地址后是直接转向后面的地址,流程如下:

  浏览器ASP文件请求->服务器执行->遇到Server.Transfer语句->服务器转向新的文件。

 

优缺点比较:

     1.Server.Transfer 只能在同一服务器端的同一站点内进行重定向;而response.redirect 没有此限制。而且Server.Transfer 后面只能使用形如test.asp这样的相对路径的文件或者目录地址,不能带参数。比如要定向到 test.asp?id=1就只能用Response.Redirect 而不能用Server.Transfer。

     2.Server.Transfer 在服务器端直接重定向,不用像response.Redirect一样要先与浏览器通信再重定向,这样可以减轻服务器的压力,效率高。

     3.Server.Transfer 可以保留上下文信息,Server.Transfer 方法有另一个参数——"preserveForm"。如果你设置这个参数为 True,比如:Server.Transfer("WebForm2.aspx", True), 那么 querystring 和任何 form 变量都会同时传递到你定位的页面。 例:WebForm1.aspx 有一个文本框名为 TextBox1,你利用 preserveForm 为 True 传递到 WebForm2.aspx,你仍然可以用 Request.Form("TextBox1") 来取得文本框的值。

     4.Server.Transfer 不会改变客户端的浏览器地址栏内的地址,也不会更新浏览器的历史记录。而response.Redirect 则会显示重定向后的地址,也会更新浏览器的历史记录。

总结:Response.Redirect 简单地告诉浏览器访问另一个页面。Server.Transfer 有利于减少服务器请求,保持地址栏 URL 不变,允许你将 query string 和 form 变量传递到另一个页面(有一点小小的缺陷,请参见:http://support.microsoft.com/default.aspx?id=kb;en-us;Q316920 )。

posted @ 2008-08-27 15:28 baiyicug 阅读(882) 评论(2) 编辑

1. 什么是WAP ?

    原先的Web内容很难在移动电话、寻呼机之类移动通信设备的小尺寸屏幕上显示,同时,HTTP和TCP/IP协议也受到了无线带宽的限制,因此才有了WAP的研究。WAP是无线应用协议(Wireless Application Protocol )首字母的缩写。它的作用就是使移动电话和其他无线设备能够访问各种服务和信息,特别是Internet上的服务与信息。WAP不是简单的一个协议,它由许多协议组成的,涵盖了从WAP设备到用户代理以及传输协议与GSM信道的各个方面。许多站点都有关于WAP的信息,具有权威的资料一般来自于WAP Forum。虽然WAP目前还处在刚刚诞生的婴儿阶段,看起来的确有很多不尽人意的地方,但是随着无线通讯工具的普及、网络技术日益成熟、生产商和网络服务商的不断进步,WAP一定会实现现在人们使用IE等浏览器上网冲浪一样的快捷、愉悦,并且更能享受随时随地想上就上的轻松自在。

 

2. 谁发展了WAP ?

    WAP是由一个名叫“WAP论坛”的公开组织发展的。这个讨论组的主要职责是制定WAP的标准和规范。该讨论组的网址为:http://www.wapforum.com/

 

3. WAP可以在什么样类型的网络上运行?

    WAP是为了可以在多种网络环境中运行而设计的。包括:GSM、PDC、CDPD、CDMA、TDMA、PHS和DECT,还包括3G。

 

4.WAP的网络架构

    WAP网络架构由3部分组成,即WAP网关、WAP手机和WAP内容服务器。其中,WAP网关起着“翻译”协议的作用,是联系GSM网与Internet的桥梁;WAP内容服务器可以存储大量信息,以供WAP手机用户来访问、浏览和查询等;WAP手机为用户提供了上网用的微浏览器及信息、命令的输入方式等。当用户从WAP手机键入想要访问的WAP内容服务器的URL后,信号经过无线网络,以WAP协议方式发送请求至WAP网关,然后经过“翻译”处理,再以HTTP协议方式与WAP内容服务器交互,最后WAP网关将服务器返回的内容压缩、处理成二进制流,并返回到客户的WAP手机屏幕上。

 

5.WAP采用什么标准

  (1)WML1.1  WML
  WML指无线标记语言(Wireless Markup Language),就象HTML对普通的Web浏览器一样,与之对应的还有WMLScript。有人说它是基于XML,但是更准确地说WML是XML的一个应用。虽然在语法上和HTML相似,但更多的是XML。

  (2)XHTML Mobile 1.0(WAP2.0)
  XHTML 1.0是一种在HTML 4.0基础上优化和改进的的新语言,目的是基于XML应用。XHTML是一种增强了的HTML,它的可扩展性和灵活性将适应未来网络应用更多的需求。

 

6.WAP 1.x与WAP 2.0

     与WAP 1.2相比,WAP 2.0主要采用的技术: 
     1.XHTMLMP。采用XHTMLMP来扩展XHTML的基本用户简介,并能够按需要增加其他语言元素。  
     2.TCP/IP传送协议移动简本。WAP 2.0 将推动业界为无线链路开发TCP移动简本,
     3.能与目前Internet上运行的通用TCP互操作。  
     4.移动友好技术:包括XHTML的简本; 层叠样式表(CSS)移动简本; 用户个性喜好和设备能力介绍等。

posted @ 2008-08-18 18:03 baiyicug 阅读(83) 评论(0) 编辑