移动平台通过jquery+asp.net mvc3与sql server交互

本例通过前台提供的参数,指定要调用的存储过程,并返回Json结果。

 

后台的代码,负责根据参数“command”调用数据库中存储过程。

参数说明:

1.user:执行调用的用户名

2.password:执行调用的用户密码

(以上主要是为了防止未经授权的调用,可以用当前登录用户的用户名及密码)

3.command:调用参数格式为“要调用存储过程名称@参数1类型$参数1的值@参数2类型$参数2的值........”。需要注意的是参数类型必须是C#中的数据类型且要与存储过程中的数据类型相容(区分大小写)。参数个数由调用的存储过程决定。

4.callback:由jquery自动添加的参数,调用时不用管。

        public ActionResult Index(string user,string password,string command,string callback)
        {
            string[] Params = command.Split('@');
            try
            {
                string classFullName = "MenuSys.Models.dblinkDataContext";//namespace+className
                string methodName = (string)Params[0];//methodName
                Type type = Type.GetType(classFullName);//获取到类型

       
               
                var u = conn.dbContext.sp_VerifyUser(user, password);
                foreach (var p in u)
                {

                    if (type != null)
                    {   
                       
                            MethodInfo mi = type.GetMethod(methodName, BindingFlags.Instance | BindingFlags.Public);//获取方法信息
                            if (mi != null)
                            {
                               List<object> o = new List<object>();
                              
                               foreach (var pp in Params)//参数类型转换
                               {
                                   string[] tp = pp.Split('$');
                                   if (tp.Length == 2)
                                   {
                                     
                                       o.Add(Convert.ChangeType( tp[1],Type.GetType("System."+tp[0])));
                                   }
                               }
                                object[] objArray = o.ToArray();
                              
                                var obj = mi.Invoke(conn.dbContext,objArray);//调用方法
                                var js = new System.Web.Script.Serialization.JavaScriptSerializer();
                                return  new JsonpResult(0,0,"成功", js.Serialize(obj),callback);
                            }
                            return new JsonpResult(1, 1, "命令不存在!", "", callback);
                    }
                }

                return new JsonpResult(1, 1, "用户验证非法!", "", callback);
            }
            catch (Exception e)
            {
                return new JsonpResult(1, 1, e.Message, "", callback);
            }
        }


 前台代码样例

用户ytx1991登录并获取用户基本信息。

sp_VerifyUser为存储过程名称,内容见下。不难看出该存储过程有两个参数,皆为字符串型。

 

ALTER proc [dbo].[sp_VerifyUser]

@username nvarchar(50),
@password nvarchar(50)
as

set nocount on

select * from [user] where username=@username and [password]=@password

前台代码

<script type=text/javascript >
  localStorage.ServersURL="http://192.168.0.55/webservers?";//网络服务地址

function webservers(){//注意下面这个函数($.getJSON)第一个参数为取json的地址,第二个参数是一个函数(function(json))当调用完成会触发该函数。
 $.getJSON(localStorage.ServersURL+"user=ytx1991&password=ytx1991&command=sp_VerifyUser@String$ytx1991@String$ytx1991&callback=?",
 function(json){ 
 
 if (json==null)//如果json对象为null说明无返回结果,这通常是网络连接的问题,要注意即便调用参数写错也是会返回Json数据的
 {alert("连接服务器失败!");window.close();navigator.app.exitApp();}
//下面可以写对返回Json数据怎样处理
/*Json返回数据的基本格式:
json.ret:数字 表示是否调用成功,0为成功,1为失败
json.errcode:数字 错误代码,尽在json.ret=1时有效
json.msg:字符串 错误信息,若成功则为“成功”
json.data:返回的数据域
本例中返回的Json字符串为
本页url({"data":"[{\"userid\":6,\"name\":\"admin     \",\"sex\":\"男 \",\"username\":\"ytx1991   \",\"password\":\"ytx1991   \",\"groupid\":null,\"usertypeid\":1}]","errcode":0,"msg":"成功","ret":0})
上面字符串会自动转换成json对象
如要得到用户ytx1991的userid可用json.data.userid 
详细的使用方法请参考相关json知识*/
 }
 );
  }
   </script>


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值