WYDC项目开发

来源:互联网 发布:淘宝店铺如何暂时关闭 编辑:程序博客网 时间:2024/06/05 03:18

一、 开发环境搭建

Vs2010 + postgresql9.0 + Npgsql.dll(Mono.Security.dll)+AjaxPro.2.dll+EasyUI

二、下载Npgsql.dll和Mono.Security.dll(官网下载)(官网)

Npgsql是PostgreSQL的一个.NET数据提供程序,它可以自由获取。如果只引用了Npgsql.dll,那么程序运行起来后会报错,提示找不到对Mono.Security.dll引用的依赖项。引用后还需要在代码中添加using即可以使用.net来访问postgresql数据库了。

下面是示例代码:

1、   在Web.config中添加

<add key="ConnectionString"value="Server=127.0.0.1;Port=5432;User  Id=postgres;Password=postgres;Database=gis;Encoding=UNICODE"/>

2、   web.config中读取信息

Using Npsql;using System.Web.Configuration;public static string GetAppSetting(string key){        string value =WebConfigurationManager.AppSettings[key];        if(value == null)        {            throw newConfigurationErrorsException("Error!");        }        return value;}public static string ConnectionString{     get       {           returnGetAppSetting("ConnectionString");       }}

3、   连接数据库

protected NpgsqlConnection GetDBConnection(){    NpgsqlConnection connect;    connect = new NpgsqlConnection(ConnectionString);    connect.Open();    return connect;}

以后用的时候直接NpgsqlConnection  conn=GetDBConnection();

////// 测试获取数据(使用要加try、catch)///private void TestGetData(){   using (NpgsqlConnection dbcon= new NpgsqlConnection(StrConnection)){   dbcon.Open();   NpgsqlCommand dbcmd =dbcon.CreateCommand();   dbcmd.CommandText = "SELECT * FROM ContainerObj.TableObj limit 5";   NpgsqlDataReader dr =dbcmd.ExecuteReader();   string strResult =string.Empty;   while (dr.Read())   {      stringstrRecord_Time_Int = dr[0].ToString();       strResult +="record_time_int: " + strRecord_Time_Int;   }   dr.Close();   dr = null;   lblRes.Text = strResult;}

注意:进行数据库连接的这段代码一定要加上try和catch,一来出错可以捕捉查看错误信息,二来程序不至于崩溃。

[封装好的Npgsql数据库操作类可参考此连接]

三、  Ajaxpro

1、  简介

Ajax(asynchronose javascript + xml)应用可以仅向服务器发送并取回必须的数据,它使用SOAP或者其他基于XML的web service接口,在客户端采用javascript处理来自服务器的响应。其优势在于以下几点:

l  通过异步模式,提升了用户体验

l  优化了浏览器和服务器之间的传输,减少了不必要的数据往返,减少了带宽的占用

l  Ajax引擎在客户端运行,承担了一部分本来由服务器承担的工作,从而减少了大用户量下的服务器负载。

2、  下载AjaxPro.2.dll并添加引用

Ajax.net有AjaxPro.dll和Ajax.dll。[源码下载][官网]

AjaxPro是ASP.NET平台上著名的AJAX框架,全名叫Ajax.NETProfessional。

3、  配置web.config[参考]

<system.web>    <httpHandlers>      <add verb="POST,GET" path="ajaxpro/*.ashx" type="AjaxPro.AjaxHandlerFactory, AjaxPro.2"/>    </httpHandlers></system.web>

4、  在.net方法中向客户端注册javascript,并将要调用的.NET方法添加AjaxMethod属性。

以下为引用的内容:

namespace MyDemo{public class _Default{    protected voidPage_Load(object sender, EventArgs e)    {     AjaxPro.Utility.RegisterTypeForAjax(typeof(_Default));    }    [AjaxPro.AjaxMethod]    public DateTimeGetServerTime()    {      return DateTime.Now;    }}
}

5、  在客户端用js调用服务器端C#方法

function getServerTime(){<span style="white-space:pre"></span>MyDemo._Default.GetServerTime().value; // asynchronous call}

6、  解决AjaxPro2中core.ashx 407缺少对象的问题[源码下载地址]

下载源码,给core.js中报错代码段加上try和catch,运行build.bat(根据提示加上release)得到修改后的AjaxPro.2.dll

7、  this.onTimeout is not a function 的Bug解决方案(参考)

在wydc项目中引用的AjaxPro.2.dll是经过此修改后冲编译的

timeout: function() {try {this.duration = new Date().getTime() - this.__start;var r = this.onTimeout(this.duration, this);if(typeof r == "undefined" || r != false) {this.abort();} else {this.timeoutTimer = setTimeout(this.timeout.bind(this),AjaxPro.timeoutPeriod);}} catch(error) {// Statements that execute in the event of an exception} finally {// Statements that execute afterward either way}

8、  参考示例1(环境搭建、接收返回值、方法的属性、缓存结果、访问session、传送DATATABLE、传送数组类型数据)

0 0
原创粉丝点击