mikebai.com

  • Home
  • dev
  • DotNET
  • M365
  • 搞笑
  • 杂七杂八
  • FocusDict
個人BLOG
it developer
DotNET

jQuery的html()等方法介绍

本来是看到一篇文章,写研究的,想COPY过来就完事了。该来来自于cssRain,但是在看的过程中,发现内容和标准偏差很多,于是就贴上它的链接,然后自己谈谈理解吧。 CSSRAIN的链接为:http://www.cssrain.cn/article.asp?id=1176 在jQuery里面对于一些HTML的元素操作都是很简化的,这也是很多人选择使用jQuery的原因。 对于获取某一个元素的值,如input框,我们往往是用$('#test').val(); $('#test')这个我就不多说了,反正就是获取ID为test的这个元素。 $('#test').val(),也就是获取它的值,一般来说,凡是能够用在FORM里的元素,都可以用.val()来进行值的获取,如input,textarea,select等,都可以用.val()来获取它们的当前值 而.val('aa');则是设置该元素的值,$('#test').val('aa'),也就是相当于设置test元素的值为aa。 类似这样的用法还有两种:.html(),.text(),这两种用法往往用在div和span元素上,一般是为这两种元素进行赋值和取值。 .html()替代了以前的 .innerHTML , .html('test') ,则是替代了 .innerHTML = 'test'; 这些类似的简化写法让我们在实际的操作中感觉得更加流畅。 这些方法都是直接在方法名里加参数来进行赋值和取值的。还有一些是通过第二个参数进行取值的(说的不太清楚。。。),比如$('#test').attr('name'),那么,返回的值就是它的attribute中的name了,如果$('#test').attr('id','test2'),则是相当于把这个test元素的name设为test2,再进行取值的时候,name就是test2了。

2009-11-10 0comments 100hotness 0likes mikebai Read all
DotNET

JQuery之CascadingSelect和FillOptions插件试用小结

今天因为要做一个通过下拉菜单选择目标教师的管理面板,需要用的了选择框的联动。 其实这个功能以前也做过,不过都需要大量的代码,麻烦,所以想试试用Ajax实现,所以开始了痛苦的一天了…… 通过百度,选定了使用JQuery的插件CascadingSelect和FillOptions 下载了示例,发现是aspx的文件……可是我用的是asp啊……于是再找,最后找到了一个asp版的json类,所以尝试自己改动一下去实现了 调试了半天,问题一大堆……例如提示什么“null为空不是对象”等等…… 又弄了半天…… 原来,$() 冲突了……另一个Js函数了声明了一个$(),幸好JQuery早就提供了解决方法;原来,json格式不对……找到的json类生成的json格式不适合JQuery的插件使用……FillOptions插件使用的格式是:["name1":"value1","name2":"value2",…] 这样的格式,改正……原来,JQuery的Ajax中文乱码……好像是UTF-8编码过的,需要Ajax的页面声明一下编码:Response.Charset="gb2312" 终于好了 附上CascadingSelect和FillOptions插件点击下载此文件 Asp.Net版的实例点击下载此文件 Asp版的json类(我修改过了)复制内容到剪贴板程序代码'--------------------------------------- ' JSONClass类 ' 将Select语句的执行结果转换成JSON '------------------------------------------ Class JSONClass ' 定义类属性,默认为Private Dim SqlString ' 用于设置Select Dim JSON ' 返回的JSON对象的名称 Dim DBConnection ' 连接到数据库的Connection对象 ' 可以外部调用的公共方法 Public Function GetJSON () dim JSONClassRs dim returnStr dim i dim oneRecord ' 获取数据 Set JSONClassRs= Server.CreateObject("ADODB.Recordset") JSONClassRs.open SqlString,DBConnection,1,1 ' 生成JSON字符串 if JSONClassRs.eof=false and JSONClassRs.Bof=false then if len(JSON)>0 then returnStr="{ "& JSON & ":" returnStr=returnStr & "["while JSONClassRs.eof=false ' ------- oneRecord= "{" for i=0 to JSONClassRs.Fields.Count -1 oneRecord=oneRecord & chr(34) &JSONClassRs.Fields(i).Name&chr(34)&":" oneRecord=oneRecord & chr(34) &JSONClassRs.Fields(i).Value&chr(34) &"," Next '去除记录最后一个字段后的"," oneRecord=left(oneRecord,InStrRev(oneRecord,",")-1) oneRecord=oneRecord & "}," '------------ returnStr=returnStr & oneRecord JSONClassRs.MoveNext Wend ' 去除所有记录数组后的"," returnStr=left(returnStr,InStrRev(returnStr,",")-1) returnStr=returnStr & "]" if len(JSON)>0 then returnStr=returnStr & "}" end if JSONClassRs.close set JSONClassRs=Nothing GetJSON=returnStr End Function '私用方法,在类中使用 Private Function check() End Function ' End Class Asp版的json类的调用方法复制内容到剪贴板程序代码dim a,StrTmpset a=new JSONClass a.Sqlstring="select jsid,(zsxm+'('+loginxm+')') as jsname from "&srsdbt(1)&" where Dep_id="&aID&" order by rank_jyk desc" a.dbconnection=conn a.json="" StrTmp = a.GetJSon()Response.Charset="gb2312"Response.write StrTmp CascadingSelect和FillOptions插件的调用方法复制内容到剪贴板程序代码<script src="include/jQuery.js" type="text/javascript"></script><script src="include/jQuery.FillOptions.js" type="text/javascript"></script><script src="include/jQuery.CascadingSelect.js" type="text/javascript"></script><script language="JavaScript">var IsErr=false;JQ("#jsname").AddOption("请先选择院系","0",true,0);JQ("#depid").CascadingSelect(JQ("#jsname"),"SRS_Check.asp?a=getjs",{datatype:"json",textfield:"jsname",valuefiled:"jsid",parameter:"id"},function(){if (IsErr){JQ("#jsname").html("");JQ("#jsname").AddOption("请先选择院系","0",true,0);}else{JQ("#jsname").AddOption("选择专家...","0",true,0);}});</script>

2009-11-10 0comments 103hotness 0likes mikebai Read all
DotNET

介绍 JSON

Arabic Bulgarian Chinese Czech Dutch English French German Greek Hebrew Hungarian Indonesian Italian Japanese Korean Persian Polish Portuguese Russian Slovenian Spanish Turkish Vietnamese object {}{ members } members pairpair , members pair string : value array [][ elements ] elements value value , elements value stringnumberobjectarraytruefalsenull string """ chars " chars charchar chars char any-Unicode-character-    except-"-or-\-or-    control-character\"\\\/\b\f\n\r\t\u four-hex-digits number intint fracint expint frac exp int digitdigit1-9 digits - digit- digit1-9 digits frac . digits exp e digits digits digitdigit digits e ee+e-EE+E- JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。 JSON建构于两种结构: “名称/值”对的集合(A collection of name/value pairs)。不同

2009-11-10 0comments 102hotness 0likes mikebai Read all
DotNET

数据类型和Json格式

1. 前几天,我才知道有一种简化的数据交换格式,叫做yaml。 我翻了一遍它的文档,看懂的地方不多,但是有一句话令我茅塞顿开。 它说,从结构上看,所有的数据最终都可以分成三种类型: 第一种类型是scalar(标量),也就是一个单独的string(字符串)或数字(numbers),比如“北京”这个单独的词。 第二种类型是sequence(序列),也就是若干个相关的数据按照一定顺序并列在一起,又叫做array(数组)或List(列表),比如“北京,东京”。 第三种类型是mapping(映射),也就是一个名/值对(Name/value),即数据有一个名称,还有一个与之相对应的值,这又称作hash(散列)或dictionary(字典),比如“首都:北京”。 我恍然大悟,数据构成的最小单位原来如此简单!难怪在编程语言中,只要有了数组(array)和对象(object)就能够储存一切数据了。 2. 我马上想到了json。 21世纪初,Douglas Crockford寻找一种简便的数据交换格式,能够在服务器之间交换数据。这其实需要二步,第一步是将各种数据转化为一个字符串,也就是数据的串行化(serialization),第二步才是交换这个字符串。 当时通用的数据交换语言是XML,但是Douglas Crockford觉得XML的生成和解析都太麻烦,所以他提出了一种简化格式,也就是Json。 Json的规格非常简单,只用一个页面、几百个字就能说清楚,而且Douglas Crockford声称这个规格永远不必升级,因为该规定的都规定了。 1) 并列的数据之间用逗号(“,”)分隔。 2) 映射用冒号(“:”)表示。 3) 并列数据的集合(数组)用方括号("[]")表示。 4) 映射的集合(对象)用大括号(“{}”)表示。 上面四条规则,就是Json格式的所有内容。 比如,下面这句话: “北京市的面积为16800平方公里,常住人口1600万人。上海市的面积为6400平方公里,常住人口1800万。” 写成json格式就是这样: [{"城市":"北京","面积":16800,"人口":1600},{"城市":"上海","面积":6400,"人口":1800}]如果事先知道数据的结构,上面的写法还可以进一步简化: [["北京",16800,1600],["上海",6400,1800]] 由此可以看到,json非常易学易用。所以,在短短几年中,它就取代xml,成为了互联网上最受欢迎的数据交换格式。 我猜想,Douglas Crockford一定事先就知道,数据结构可以简化成三种形式,否则怎么可能将json定义得如此精炼呢! 3. 我还记得,在学习javascript的时候,我一度搞不清楚“数组”(array)和“对象”(object)的根本区别在哪里,两者都可以用来表示数据的集合。 比如有一个数组a=[1,2,3,4],还有一个对象a={0:1,1:2,2:3,3:4},然后你运行alert(a[1]),两种情况下的运行结果是相同的!这就是说,数据集合既可以用数组表示,也可以用对象表示,那么我到底该用哪一种呢? 我后来才知道,数组表示有序数据的集合,而对象表示无序数据的集合。如果数据的顺序很重要,就用数组,否则就用对象。 4. 当然,数组和对象的另一个区别是,数组中的数据没有“名称”(name),对象中的数据有“名称”(name)。 但是问题是,很多编程语言中,都有一种叫做“关联数组”(associative array)的东西。这种数组中的数据是有名称的。 比如在javascript中,可以这样定义一个对象: var a={"城市":"北京","面积":16800,"人口":1600}; 但是,也可以定义成一个关联数组: a["城市"]="北京";a["面积"]=16800;a["人口"]=1600; 这起初也加剧了我对数组和对象的混淆,后来才明白,在Javascript语言中,关联数组就是对象,对象就是关联数组。这一点与php语言完全不同,在php中,关联数组也是数组。 比如运行下面这段javascript: var a=[1,2,3,4]; a['foo']='Hello World'; alert(a.length); 最后的结果是4,也就是说,数组a的元素个数是4个。 但是,运行同样内容的php代码就不一样了: $a=array(1,2,3,4); $a["foo"]="Hello world"; echo count($a); 最后的结果是5,也就是说,数组a的元素个数是5个。

2009-11-10 0comments 99hotness 0likes mikebai Read all
DotNET

ashx是什么文件,如何创建

.ashx 文件用于写web handler的。其实就是带HTML和C#的混合文件。当然你完全可以用.aspx 的文件后缀。使用.ashx 可以让你专注于编程而不用管相关的WEB技术。.ashx必须包含IsReusable. 如下例所示<% @ webhandler language="C#" class="AverageHandler" %> using System; using System.Web; public class AverageHandler : IHttpHandler { public bool IsReusable { get { return true; } } public void ProcessRequest(HttpContext ctx) { ctx.Response.Write("hello"); } } .ashx比.aspx的好处在与不用多一个html   注意了VS2005中Web应用程序项目模板里的Generic Handler 项,发现它是一个.ashx文件,实际上它是一个HttpHandler。后来查了一下.Net SDK文档,发现Asp.Net1.1也支持.ashx,但是没有给出详细内容。 我们都知道,HttpHandler是一个彻底自定义Http请求的方法,它通过web.config来定义Asp.Net运行时来过滤出要自定义的Http请求,发送到定义在web.config的指定类中。 利用.ashx文件是一个更好的方法,这个文件类似于.aspx文件,可以通过它来调用HttpHandler类,从而免去了普通.aspx页面的控件解析以及页面处理的过程。这个文件特别适合于生成动态图片,生成动态文本等内容。 建立方法如下: 首先打开一个Web项目,然后在任意目录下使用VS2003解决方案资源管理器的“添加”-->“添加新项”,在对话框中选择“文本文件”,然后在文件名处输入“TextBuilder.ashx”。 然后在同目录下,使用解决方案资源管理器,使用“添加”-->“添加类”,在类文件名处输入“TextBuilder.ashx.cs”。可以看出,它的文件命名规律与.aspx文件相同。 然后在.cs文件处输入以下代码(名称空间略): using System.Web public sealed class TextBuilder : IHttpHandler {     public void ProcessRequest(HttpContext context)

2009-11-10 0comments 100hotness 0likes mikebai Read all
DotNET

ashx+jQuery,一个轻量级的asp.net ajax解决方案

跟shotdog老师研究探讨了下asp.net里,除官方庞大asp.net ajax之外的ajax解决方案。我们想法是以不同的服务器端方式输出,然后在页面使用jQuery的ajax实现调用服务器端几个解决方案: 使用一般的webform,在页面用jQuery ajax调用,再从取得的html数据中取得<body>内的内容,写入DOM优点:不用改变现有的asp.net开发模式,可以使用现成的页面;ajax取得的内容是html文本,直接写入DOM即可缺点:内容浪费,<body>之外的内容都不是必要的,而且如果使用了MasterPage那就。。。使用一般的webform,但是用Response.Write()控制输出html,在页面用jQuery ajax调用,将获取的内容写入DOM优点:内容干净,不浪费;ajax取得的内容是html文本,可以直接写入DOM缺点:需要在服务器端以字符串形式构造html文本,编程不方便,不容易调试和维护使用一般的webform,用Response.Write()控制输出json数据,在页面用jQuery ajax调用,将json数据在客户端加工成html后写入DOM优点:仅仅交换json数据,极干净,符合高效的web设计理念缺点:需要在客户端加工json数据,并且对DOM造成入侵使用asmx,封装成web service,用jQuery ajax调用asmx的内容,将json或者xml数据在客户端加工成html后写入DOM优点:仅仅交换json或/xml数据,非常干净;web service易于跨平台缺点:需要在客户端加工json数据,并且对DOM造成入侵使用自定义控件ascx,然后使用专门的webform页面做wrapper(包装)在页面用jQuery ajax调用wrapper webform,将html数据写入DOM优点:webform仅仅用作wrapper,根据不同的请求参数可以在wrapper中动态使用自定义控件;自定义控件输出的是html文本,可以直接写入DOM;编程方便,有VS2008代码感知支持,易于调试和维护缺点:跟传统的webform编程理念不一样,弱化了webform的作用以上就是讨论的几种可行的方案——不管是asp.net webform方式还是asp.net MVC方式,都是可行的。 昨天晚上又发现一种方案:使用ashx+jQuery .ashx是一个专门的用于处理HttpHandler的文件类型,用来处理自定义Http请求,可以在web.config定义运行时针对ashx的Http请求处理方式。 <add verb="*" path="*.ashx" type="System.Web.UI.SimpleHandlerFactory" validate="false" />这样我们就可以用SimpleHandlerFactory来处理ashx的http请求了。在ashx的类中实现IRequiresSessionState接口,using下System.Web.SessionState就可以使用Session了,很方便 using System.Web.SessionState;     public class checkCookie : IHttpHandler ,IRequiresSessionState{  ...  // todo somthing}实例:使用ashx+jQuery实现Email存在的验证 .ashx文件 <%@ WebHandler Language="C#" Class="CheckUser" %> using System;using System.Web;  public class CheckUser : IHttpHandler {     public void ProcessRequest (HttpContext context) {        context.Response.ContentType = "text/plain";        context.Response.Write(UserRule.GetInstance().IsUserExist(context.Request["Email"]));    }     public bool IsReusable {        get {            return false;        }    }}html:    <input type="text" id="email" />   <input type="button" value="test" onclick="check_email()" />js: function check_email() {    var email = $("#email").attr("value");    $.get("../ajax/checkuser.ashx",    { Email: email },    function(data) {        window.alert(data);    });}simple的,显然效率会比较高。不过simple的就只能够做点simple的事情。如果要输出html,还是不太方便。如果要输出html的话,我还是比较倾向于用ascx处理内容,webform做包装所以ashx+jQuery应该算是是一个asp.net里轻量级的解决方案

2009-11-10 0comments 100hotness 0likes mikebai Read all
DotNET

jQuery 入门

昨天收到了cssrain的赠书《锋利的jQuery》,看了一个章节,非常不错,这里先推荐一下! 今天开始我将博客的重点放在jQuery上了,重新开始学习jQuery,并将重新学到的东西和大家分享,有不对或不妥的地方希望大家能毫无保留的留言指出,大家一起学习,一起进步。 至于什么是jQuery,jQuery的优缺点,jQuery和其他javascript库的对比我就不说了,网上已经有很多了,我这里只说一些可能更关心的一些东西。 我没JS基础,能学jQuery吗? 能!很多人说jQuery非常容易上手,不懂JS也能学的很好,是的,但是我相信如果你懂得JS能更好的学习jQuery。 有没有支持jQuery语法和语法提示的编辑器或工具呢? 有,而且很多。这里推荐最常用的几款: 1.aptana 官方下载:http://www.aptana.com/ aptana最强大的就是支持js及各个有名的js框架的语法提示,当然包括jQuery,看一些关于aptana的使用, Aptana使用入门一(中文) web开发利器Aptana studio 1.2(下载,破解,汉化) aptana要支持jQuery语法提示只要在References窗口下的Global References下勾选jQuery就可以了,如图: 2.Dreamweaver cs4 cssrain开发了支持jQuery语法提示的插件,DW cs4的jQuery语法提示插件,安装这个插件需要Adobe Extension Manager扩展器 3.VS2008 Jeff King发布了一个jQuery智能提示Visual Studio 2008 SP1 补丁,安装这个补丁后,Visual Studio 2008可以自动找到vsdoc.js文件。 http://code.msdn.microsoft.com/KB958502/Release/ProjectReleases.aspx?ReleaseId=1736 怎么配置jQuery? 先到jQuery官方网站(http://jquery.com/)下载jQuery库,目前最新版本是1.3.2,选择一个下载版本(开发版本和压缩版)如图: 开发版本和压缩版比较: 开发版:jquery-1.3.2.js,主要用于学习测试, 压缩版:jquery-1.3.2.min.js,主要用于项目开发, 下载好后引用这个jQuery库就可以了我们的jQuery开发了,在页面的<head></head>区插入<script type="text/javascript" src="jquery-1.3.2/jquery-1.3.2.min.js"></script>就可以了。 我们的第一个jQuery程序 我们写一个弹出Hello jQuery!的程序: < !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>我们的第一个jQuery程序</title><script type="text/javascript" src="http://www.css88.com/jquery-1.3.2/jquery-1.3.2.min.js"></script><script type="text/javascript">$(document).ready(fun

2009-11-09 0comments 123hotness 0likes mikebai Read all
DotNET

jQuery是什么

|seektanjQuery是最近比较火的一个JavaScript库,从del.icio.us/上相关的收藏可见一斑。 到目前为之jQuery已经发布到1.2.1版本,而在这之前的一个星期他们刚发布1.2版本,看看他的各个版本的 发布时间 ,不难发现他的飞速发展,每个月都在更新版本;而且不断有人开发出新的 jQuery插件 ,最近又推出了 jQuery UI 库jQuery于2006年一月十四号在BarCamp NYC (New York City)面世。主将 John Resig ,写有《Pro JavaScript Techniques》一书,因为效力于mozolla,据说firefox 3将包含Jquery,现在的 Jquery团队 有主要开发人员,推广人员,UI,插件开发,网站设计维护,其中3个主要开发人员分别是:两个美国人John Resig/Brandon Aaron,一个德国人Jorn Zaefferer) 下面简单介绍一下jQuery的一些特性和用法: 1、精准简单的选择对象(dom): 以下为引用的内容:$('#element');// 相当于document.getElementById("element") $('.element');//Class$('p');//html标签$("form > input");//子对象$("div,span,p.myClass");//同时选择多种对象$("tr:odd").css("background-color", "#bbbbff");//表格的隔行背景$(":input");//表单对象$("input[name='newsletter']");//特定的表单对象 2、对象函数的应用简单和不限制: element.function(par); $(”p.surprise”).addClass(”ohmy”).show(”slow”)... 3、对已选择对象的操作(包括样式): 以下为引用的内容:$("#element").addClass("selected");//给对象添加样式$('#element').css({ "background-color":"yellow", "font-weight":"bolder" });//改变对象样式$("p").text("Some new text.");//改变对象文本$("img").attr({ src: "test.jpg", alt: "Test Image" });//改变对象文本$("p").add("span");//给对象增加标签$("p").find("span");//查找对象内部的对应元素$("p").parent();//对象的父级元素$("p").append("<b>Hello</b>");//给对象添加内容 4、支持aJax,支持文件格式:xml/html/script/json/jsonp   以下为引用的内容:$("#feeds").load("feeds.html");//相应区域导入静态页内容$("#feeds").load("feeds.php", {limit: 25}, function(){alert("The last 25 entries in the feed have been loaded");});//导入动态内容 4、对事件的支持: 以下为引用的内容:$("p").hover(function () {      $(this).addClass("hilite");//鼠标放上去时    }, function () {      $(this).removeClass("hilite");//移开鼠标    });//鼠标放上去和移开的不同效果(自动循环所有p对象) 5、动画: 以下为引用的内容:$("p").show("slow");//隐藏对象(慢速渐变)$("#go").click(function(){$("#block").animate({  &

2009-11-09 0comments 99hotness 0likes mikebai Read all
DotNET

SQLite不支持的SQL语法有哪些

1 TOP这是一个大家经常问到的问题,例如在SQLSERVER中可以使用如下语句来取得记录集中的前十条记录:SELECT TOP 10 * FROM [index] ORDER BY indexid DESC;但是这条SQL语句在SQLite中是无法执行的,应该改为:SELECT * FROM [index] ORDER BY indexid DESC limit 0,10;其中limit 0,10表示从第0条记录开始,往后一共读取10条 2 创建视图(Create View)SQLite在创建多表视图的时候有一个BUG,问题如下:CREATE VIEW watch_single AS SELECT DISTINCTwatch_item.[watchid],watch_item.[itemid] FROM watch_item;上面这条SQL语句执行后会显示成功,但是实际上除了SELECT COUNT(*) FROM [watch_single ] WHERE watch_ single.watchid = 1;能执行之外是无法执行其他任何语句的。其原因在于建立视图的时候指定了字段所在的表名,而SQLite并不能正确地识别它。所以上面的创建语句要改为:CREATE VIEW watch_single AS SELECT DISTINCT [watchid],[itemid] FROM watch_item;但是随之而来的问题是如果是多表的视图,且表间有重名字段的时候该怎么办? 3 COUNT(DISTINCT column)SQLite在执行如下语句的时候会报错:SELECT COUNT(DISTINCT watchid) FROM [watch_item] WHERE watch_item.watchid = 1;其原因是SQLite的所有内置函数都不支持DISTINCT限定,所以如果要统计不重复的记录数的时候会出现一些麻烦。比较可行的做法是先建立一个不重复的记录表的视图,然后再对该视图进行计数。 4 外连接虽然SQLite官方已经声称LEFT OUTER JOIN 已经实现,但还没有 RIGHT OUTER JOIN 和 FULL OUTER JOIN。但是实际测试表明似乎并不能够正常的工作。以下三条语句在执行的时候均会报错:SELECT tags.[tagid] FROM [tags],[tag_rss] WHERE tags.[tagid] = tag_rss.[tagid](*);SELECT tags.[tagid] FROM [tags],[tag_rss] WHERE LEFT OUTER JOIN tag_rss.[tagid] = tags.[tagid];SELECT tags.[tagid] FROM [tags],[tag_rss] WHERE LEFT JOIN tag_rss.[tagid] = tags.[tagid];此外经过测试用+号代替*号也是不可行的。   收集SQLite与Sql Server的语法差异 1.返回最后插入的标识值 返回最后插入的标识值sql server用@@IDENTITY sqlite用标量函数LAST_INSERT_ROWID() 返回通过当前的 SQLConnection 插入到数据库的最后一行的行标识符(生成的主键)。此值与 SQLConnection.lastInsertRowID 属性返回的值相同。 2.top n 在sql server中返回前2行可以这样: select top 2 * from aa order by ids desc sqlite中用LIMIT,语句如下: select * from aa order by ids desc LIMIT 2 3.GETDATE ( ) 在sql server中GETDATE ( )返回当前系统日期和时间 sqlite中没有 4.EXISTS语句 sql server中判断插入(不存在ids=5的就插入) IF NOT EXISTS (select * from aa where ids=5) BEGIN insert into aa(nickname) select 't' END 在sqlite中可以这样 insert into aa(nickname) select 't' where not exists(select * from aa where ids=5) 5.嵌套事务 sqlite仅允许单个活动的事务 6.RIGHT 和 FULL OUTER JOIN sqlite不支持 RIGHT OUTER JOIN 或 FULL OUTER JOIN 7.可更新的视图 sqlite视图是只读的。不能对视图执行 DELETE、INSERT 或 UPDATE 语句,sql server是可以对视图 DELETE、INSERT 或 UPDATE

2009-11-08 0comments 102hotness 0likes mikebai Read all
DotNET

C#使用SQLite数据库

SQLite 是目前比较流行的一个开源、免费的小型的Embeddable RDBMS(关系型数据库),用C实现,内存占用较小,支持绝大数的SQL92标准,个别不支持的情况,在这里说明 对各种语言的支持也比较不错,wrapper很多。 Google Gears 、Mozilla 和 Adobe AIR 都在使用sqlite,应该说明其还是很不错的 SQLite 的关键字列表,这里 支持的sql语法,在这里 在 .NET 里面使用 SQLite, 我这里使用的wrapper是 System.Data.SQLite,它只需要一个dll,接口符合ADO.Net 2.0的定义,性能也不错,NHibernate用的也是它,目前支持ADO.NET 3.5了,支持集成在 VS2005 和 VS2008里面,而且支持wince,是个亮点 因为符合ADO.NET的规范,所以使用方式,基本和 SqlClient, OleDb等原生的一致 using System.Data; using System.Data.SQLite; //... using (SQLiteConnection cn = new SQLiteConnection( "Data Source=Test.db3;Pooling=true;FailIfMissing=false") ) { //在打开数据库时,会判断数据库是否存在,如果不存在,则在当前目录下创建一个 cn.Open(); using (SQLiteCommand cmd = new SQLiteCommand()) { cmd.Connection = cn; //建立表,如果表已经存在,则报错 cmd.CommandText = "CREATE TABLE [test] (id int, name nvarchar(20))"; cmd.ExecuteNonQuery(); //插入测试数据 for (int i = 2; i < 5; i++) { [我的空间服务商竟然把下面的单词也屏蔽了,太业余了.如果你怕买到这么牛逼的空间的话,可以联系] cmd.CommandText = string.Format("I_NSERT INTO [test] V_ALUES ({0}, '中文测试')", i); cmd.ExecuteNonQuery(); } for (int i = 5; i < 10; i++) { cmd.CommandText = string.Format("I_NSERT INTO [test] V_ALUES ({0}, 'English Test')", i); cmd.ExecuteNonQuery(); } //读取数据 cmd.CommandText = "SELECT * FROM [test]"; using (SQLiteDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection)) { while (dr.Read()) { Console.WriteLine("第{0} 条:{1}", dr.GetValue(0), dr.GetString(1)); } } } }//引用2http://www.cnblogs.com/chris1943/archive/2008/02/03/1063279.html刚开始的时候没注意语法后来才发现,原来用SQLite分页是世界上最简单的。如果我要去11-20的Account表的数据Select * From Account Limit 9 Offset 10;以上语句表示从Account表获取数据,跳过10行,取9行嗯,我觉得这个特性足够让很多的web中型网站使用这个了。也可以这样写 select * from account limit10,9和上面的的效果一样。这种写法MySQL也支持。

2009-11-08 0comments 103hotness 0likes mikebai Read all
1…4546474849…62

Recent Posts

  • c# winform适配高dpi
  • com.microsoft.sqlserver.jdbc.SQLServerException “trustServerCertificate”属性设置为“false”,但驱动程序无法使用安全套接字层 (SSL) 加密与 SQL Server建立安全连接
  • java -cp 用法介绍
  • HTML 容器元素
  • MVC的cshtml的介绍

Recent Comments

No comments to show.

COPYRIGHT © 2025 mikebai.com. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang