关于C#的微信开发的入门记录二

在准备了空间和域名之后,现在来讲讲我们接下来的编码过程:

今天就先到这里了!没有服务器那些的请看我之前的博客:http://www.cnblogs.com/zhankui/p/4515905.html

不会域名解析的请看:http://www.cnblogs.com/zhankui/p/4517333.html

 
   

因为我拿到手的项目是要做一个微信教务系统,所以呢我这里肯定是要用到数据库的,所以代码总放在一起不好看,也不方便修改,所以采用分层的方式来进行编码,我的分层如下图所示:

顺便提一下三层架构:

三层架构(3-tier architecture) 通常意义上的三层架构就是将整个业务应用划分为:表现层(Presentation layer)、业务逻辑层(Business Logic Layer)(BLL)、数据访问层(Data access layer)(DAL)。区分层次的目的即为了“高内聚低耦合”的思想。在软件体系架构设计中,分层式结构是最常见,也是最重要的一种结构。微软推荐的分层式结构一般分为三层,从下至上分别为:数据访问层、业务逻辑层(又或称为领域层)、表示层(我这里是用UI表示)。

1:数据访问层:主要是对原始数据(数据库或者文本文件等存放数据的形式)的操作层,而不是指原始数据,也就是说,是对数据的操作,而不是数据库,具体为业务逻辑层或表示层提供数据服务.

2:业务逻辑层:主要是针对具体的问题的操作,也可以理解成对数据层的操作,对数据业务逻辑处理,如果说数据层是积木,那逻辑层就是对这些积木的搭建。

3:表示层:主要表示WEB方式,也可以表示成WINFORM方式,WEB方式也可以表现成:aspx,如果逻辑层相当强大和完善,无论表现层如何定义和更改,逻辑层都能完善地提供服务。

剩下的MODEL和DBUtility分别是:

1:MODEL模型层,这是一个实体类,具体作用已经有大神写过了欢迎围观,地址:http://www.cnblogs.com/sdjxcolin/archive/2008/12/12/1353780.html

2:DBUtility(database
utility)数据库功能,这里呢其实本来可以和DAL放在一起的,但是不太方便,所以分离出来,这里就是放的不同数据库的访问功能(查询语句,非查询语句)。

层分好了,现在就是建立与数据库的连接了,在UI层,有一个Web.config配置文件,我们会将数据库的连接字符串放在这里(也就是连接到哪个服务器,用户名密码的一个验证),那有朋友可能就要问了,为啥要放这儿是吧,之前老师讲课的时候,开小差了,没听到,所以后来又补了补,原因为:Web.config文件是一个XML文本文件,它用来储存ASP.NETWeb 应用程序的配置信息(如最常用的设置ASP.NETWeb 应用程序的身份验证方式),它可以出现在应用程序的每一个目录中。当你通过.NET新建一个Web应用程序后,默认情况下会在根目录自动创建一个默认的Web.config文件,包括默认的配置设置,所有的子目录都继承它的配置设置。如果你想修改子目录的配置设置,你可以在该子目录下新建一个Web.config文件。它可以提供除从父目录继承的配置信息以外的配置信息,也可以重写或修改父目录中定义的设置。

在运行时对Web.config文件的修改不需要重启服务就可以生效(注:
节例外)。当然Web.config文件是可以扩展的。你可以自定义新配置参数并编写配置节处理程序以对它们进行处理。

处理如下(将connectionStrings里的中文改成你实际的参数即可):

<?xml version="1.0" encoding="utf-8"?>

<!--

  有关如何配置 ASP.NET 应用程序的详细信息,请访问

  http://go.microsoft.com/fwlink/?LinkId=169433

  -->

<configuration>

    <system.web>

      <compilation debug="true" targetFramework="4.5" />

      <httpRuntime targetFramework="4.5" />

          <!--这里要修改成4.0的,因为我的服务器上面有限制,所以大家看好了在修改-->

    </system.web>

    <connectionStrings>

      <add name="SQLConn" connectionString="Server=服务器名字;database=数据库名字;uid=用户名;pwd=密码"/>

    </connectionStrings>

</configuration>

  

接下来就是DBUtility了,因为我这里使用的是sql server数据库所以我取名为sqlHelper.cs为啥呢,通过名字可以看出来,这是个数据库帮助文件,帮助什么呢?那就是我们把数据库的操作(增删查改)放在这里面,但是我们要引入以下三个命名空间:

using System.Configuration;

using System.Data.SqlClient;

using System.Data;

科普一下常用基本的:

using System; 主命名空间,包含所有.net基础类型和通用类型,比如Object,比如string等等
using System.Collections; 集合命名空间,包含常用的如ArrayList等集合类
using System.Configuration; 配置命名空间,包含应用程序配置相关的类比如ConfigurationManager
using System.Data; 数据命名空间,包含ado.net最基础的类型,比如DbConnection等
using System.Linq; 3.5引入的linq语法需要提供的支持类,主要包含了Enumerable扩展方法支持类
using System.Web; asp.net所需要的核心命名空间,包含诸如HttpRuntime等的基础运行环境类
using System.Web.Security; asp.net在角色验证和安全方面的类库,比较重要的是FormsAuthentication
using System.Web.UI; asp.net web page控件所需要的基本命名空间,包含所有如Control或者重要的IPostbackeventhandler接口等
using System.Web.UI.HtmlControls; html原生控件,如input
runat=server会映射到这里面的某个InputXxx控件类
using System.Web.UI.WebControls; 服务器控件,如GridView就是在这个里面
using System.Web.UI.WebControls.WebParts; WebParts技术所需要的空间,不过很少用
using System.Xml.Linq; linq2xml的主命名空间,包含XDocument和XElement比较重要的类
using System.Data;

引入命名空间完成后:

//数据库连接字符串

Public static readonly string ConnectionString
= ConfigurationManager.ConnectionStrings["SQLConn"].ConnectionString;

这是从我们之前的配置文件中读取出:

<connectionStrings>

<add name="SQLConn" connectionString="Server=服务器名字;database=数据库名字;uid=用户名;pwd=密码"/>

</connectionStrings>

不过当按照我的做完以后,会报错,提示找不到ConfigurationManager,为什么呢?这个确实是在configuration命名空间里的是吧,因为没有添加引用右击DBUtility——》添加——》引用(不是服务引用)——》框架里面有一个:System.Configuration,勾上添加完这个程序集以后就可以个;那一行代码就不会报错,我们的数据库连接字符串算是从配置文件搞出来了,接下来就是配置了,避免每次都要设置这些,直接拿出来单独写一下,以后直接拿着用:

private static void PrepareCommand(SqlCommand cmd, SqlConnection conn, SqlTransaction trans, CommandType cmdType, string cmdText, SqlParameter[] values)

在这里:

cmd是命令对象

conn是连接对象

trans是事务类型

cmdType是命令类型

cmdText是命令文本

values是 参数

        {

            if (conn.State != ConnectionState.Open)

            {

                conn.Open();

            }

            cmd.Connection = conn;

            cmd.CommandType = cmdType;

            cmd.CommandText = cmdText;

            if (trans != null)

            {

                cmd.Transaction = trans;

            }

            if (values != null)

            {

                foreach (var item in values)

                {

                    cmd.Parameters.Add(item);

                }

            }

        }

  

接下来写非查询语句:

publicstaticintExecuteNonQuery(stringconnectionString, CommandTypecmdType, stringcmdText, paramsSqlParameter[] values)

        {

            SqlCommandcmd=newSqlCommand();//实例化命令对象

            using (SqlConnectionconn=newSqlConnection(ConnectionString)) //实例化连接对象

            {

                PrepareCommand(cmd, conn, null, cmdType, cmdText, values);//为命令准备各种属性

                intval=cmd.ExecuteNonQuery(); //调用执行

                cmd.Parameters.Clear(); //清除参数

                returnval;

            }

        }

publicstaticintExecuteNonQuery(SqlConnectionconn, CommandTypecmdType, stringcmdText, paramsSqlParameter[] values)

        {

            SqlCommandcmd=newSqlCommand();

            PrepareCommand(cmd, conn, null, cmdType, cmdText, values);

            intval=cmd.ExecuteNonQuery();

            cmd.Parameters.Clear();

            returnval;

        }

  

查询语句(数据读取器):

publicstaticSqlDataReaderExecuteReader(stringconnectionString, CommandTypecmdType, stringcmdText, paramsSqlParameter[] values)

        {

            SqlCommandcmd=newSqlCommand();

            SqlConnectionconn=newSqlConnection(connectionString);

            try

            {

                PrepareCommand(cmd, conn, null, cmdType, cmdText, values);//为命令准备各种属性

                SqlDataReaderrdr=cmd.ExecuteReader(CommandBehavior.CloseConnection);

                cmd.Parameters.Clear();

                returnrdr;

            }

            catch

            {

                conn.Close();

                throw;

            }

        }

publicstaticobjectExecuteScalar(stringconnectionString, CommandTypecmdType, stringcmdText, paramsSqlParameter[] values)

        {

            SqlCommandcmd=newSqlCommand();

            using (SqlConnectionconn=newSqlConnection(connectionString))

            {

                PrepareCommand(cmd, conn, null, cmdType, cmdText, values);//为命令准备各种属性

                objectobj=cmd.ExecuteScalar();

                cmd.Parameters.Clear();

                returnobj;

            }

        }

今天就先到这里了!没有服务器那些的请看我之前的博客:http://www.cnblogs.com/zhankui/p/4515905.html

不会域名解析的请看:http://www.cnblogs.com/zhankui/p/4517333.html

时间: 2024-10-13 21:00:34

关于C#的微信开发的入门记录二的相关文章

关于C#的微信开发的入门记录一

在之前老是看到一些微信开发的例子,但是作为初学者会有很多问题,之前我也找了很多帖子,但是最终也没能解决,现在刚好手里有一个项目,总结一下分享给准备做却动不了手的朋友们,本文只是以我个人的经验作为浅谈(大学生),不足之处还望大家不吝赐教! 在开发之前我们需要有三样东西,接下来将一一介绍三样东西的准备: 首先,需要申请一个公众平台账号: 其次,需要一个域名空间,也就是在网络上得一块空间: 再次,还需要一个网站: 一:微信公众平台账号,怎样注册网上有很详细的教程,请移步查看: 然后问题来了,请仔细查看

微信开发实战入门视频教程(Android4.4.2)

基于移动技术微信公众平台开发实战入门(Android4.4.2,微移动应用,项目实战) 适合人群:初级课时数量:40课时用到技术:微移动应用涉及项目:手机微信开发 qq:1840215592 课程内容简介微信腾讯公司推出的一个即时通讯服务的应用,微信提供公众平台.朋友圈.消息推送等功能,预计到2014年年底其注册用户量将突破10亿.面对一个用户数如此巨大的家伙,大家怎么能放过,都迫不及待的希望自己的应用能够跟微信产生一些联系.那么我们这套课程要讲的就是如何跟微信产生连接,如何将我们的网站接入到微

C#微信开发之入门

这段时间公司要开发微信公众号,研究了一段时间,走了不少弯路,现在记录下这段时间的劳动成果. 开发微信公众号当然第一步是要申请个公众号啦,可是申请公众号很麻烦,而且需要很长时间,具体怎么申请可以百度下.为了方便我就申请了一个测试号,看微信开发文档的时候发现新大陆啦,有测试号这东西,省了我不少麻烦,哈哈! 一.申请测试号 1.输入网址http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login,进入申请微信测试号页面 2.如果有微信就可以

微信开发学习总结(二)——微信开发入门

上一篇<微信开发学习总结(一)——微信开发环境搭建>我们已经完成了微信开发的准备工作,准备工作完成之后,就要开始步入正题了. 一.微信公众平台的基本原理 在开始做之前,先简单介绍了微信公众平台的基本原理. 微信服务器就相当于一个转发服务器,终端(手机.Pad等)发起请求至微信服务器,微信服务器然后将请求转发给我们的应用服务器.应用服务器处理完毕后,将响应数据回发给微信服务器,微信服务器再将具体响应信息回复到微信App终端. 通信协议为:HTTP 数据传输格式为:XML 具体的流程如下图所示:

微信开发__入门

0.作者前言 本文针对人群是有一定开发基础的人员,可以比较快的帮助你了解和学习微信开发. 其次是本文作者本次书写,全部采用的是个人的订阅号,假如是正常的开发流程,可能会存在不同,请读者注意. 本文代码部分主要提供的是关键代码,非关键代码因人而异,需要读者自行补充,请注意. 今天文章下面对一些方法进行了封装,虽然在公司里面,这些都是由后台来对这些任务完成,但是身为一个有理想,有抱负的前端,我们会肯定是有必要的,对吧.而且微信开发很多时候,也是直接由前端来开发完成的. 最后,如果喜欢本文,请关注我呦

微信开发之入门篇(一)

刚开始进行微信的开发测试,从最基础的入手: 控件.接口等的使用参考https://mp.weixin.qq.com/debug/wxadoc/dev/index.html?t=2017117 今天测试wx.request接口的时候出现域名网址不合法的情况,捣鼓了好久,网上说需要在小程序的公众平台账号上配置域名才能正常访问: 但今天测试出来了另外一种方法(适用于测试): 将微信开发工具左上角的设置-->设置代理栏选为不使用任何代理,直接连接服务器 然后勾选项目中的开发环境不校验请求域名与TLS版本

php微信开发之带参数二维码的使用

最近做微信PC端网页微信相关功能的开发,从一个新手的角度来说,微信公众号的文档还是不好理解的,网上找的帖子大都也都基本上是复制微信公众平台上给的文档,开发微信带参数二维码过程中还是遇到不少坑的,在此把我的开发过程比较详细的记录下,希望对大家有所帮助. 我本次开发使用的是认证服务号. 1 接入首先进入微信公众号 -> 基本配置 下面是基本配置的页面,在URL中填写服务器地址,这个地址就是接受微信推送事件的一个接口,我是使用thinkPHP框架开发的程序,在其中一个Module(Decoration

C#微信开发小白成长教程二(新手接入指南,附视频)

距离第一讲又已经过去了一个多星期了,本打算一周更新一讲的,奈何实在太忙.最近也在群里发现有一部分人已经可以熟练调用微信的部分接口但却不是很清楚微信公众平台接收消息的一个处理机制.本讲就来介绍下怎么接入开发者的服务器. 接入微信公众平台开发,开发者需要按照如下步骤完成: 1.填写服务器配置 2.验证服务器地址的有效性 3.依据接口文档实现业务逻辑 举个形象的例子:比如在抗战时期,各个军队之间需要进行通讯,在战场上军情的保密是很重要的.所以A.B两个军队事先约定好了接头的暗号(token),所有的书

微信开发基础知识记录

1.为了识别用户,每个用户针对每个公众号会产生一个安全的OpenID,如果需要在多公众号.移动应用之间做用户共通, 则需前往微信开放平台,将这些公众号和应用绑定到一个开放平台账号下,绑定后,一个用户虽然对多个公众号和应用有多个不同的OpenID, 但他对所有这些同一开放平台账号下的公众号和应用,只有一个UnionID. 2.公众平台以access_token为接口调用凭据,来调用接口,所有接口的调用需要先获取access_token,access_token在2小时内有效, 过期需要重新获取,但