.NET开发过程中手记(2011-9-21)

一、关于VS Studio环境中的正则表达式替换:

某日,我想把所有的,

ds.Tables[0].Row[0]["name"].ToString();

的语句替换成

Convert.ToString(ds.Tables[0].Row[0]["name"]);

注意:这样的替换是必须的,因为,如果数据表中没有数据,那么NULL.ToString()是会产生错误的!Convert.ToString()却等于string.Empty。

为了避免更多的异常,我决定把所有的这些语句替换掉!

 

在VS2008中按CTRL+F打开查找替换窗口,

如下图:

 1、查找内容这里:ds\.{(.+)}\.ToString\(\); 为什么这么写呢?

(1). VS的正则表达式不支持“非贪心”搜索,即:+? or *? 
(2.) VS的正则表达式的反引用(backreference)是用花括号{}而不是(). 

 2、替换的时候,引用查找到的数据的时候,不是$1,$2之类的,那是JS的,在VS中就要用\1,\2

 

二、关于.NET网站系统的规划问题手记(有续集,太多些不完!高手略过。。。)

1、系统整体的结构规划非常重要,设计前,请考虑好用MVC架构模式还是用其他模式。否则仅仅是后面的URL的规划,都能把人烦死!(这一块适用于所有的系统开发)

2、URL,还是URL,为什么呢,URL是一个网站成败的主要原因,有利于搜索引擎,才能让你的网站更加的有效益。

3、代码的安全,尽量尽量把后台代码和前台页面分开,最好用模板。

4、前台的JS框架,CSS框架,还有页面框架,我一般采用DIV+CSS+JQUERY,不建议用EXT库,虽说很强大,但是过程很痛苦!(慢慢体会去。。)

5、还有一个棘手的问题,就是DAL,BLL这些重复代码的编写,(这个问题我写了个代码生成器,需要的联系我QQ:491217650这一步绝对可以减少你30%的工作时间!

6、数据库的设计问题,这个应该放到5之前,一般情况下,为了系统更加人性化,所有数据表应该有的字段就是:

ID,AddUser,AdderIP,AddTime,Enabled,Index,

这个也不是绝对的,可以按照自己的情况酌情添加!

AddUser,AddTime主要为了管理员管理的时候查看是“谁在哪里添加了这条信息”,

ID这个不用说了吧,用于检索,编辑,删除等传入的参数,

Enabled这个为了控制在首页显示或者不显示等等的作用,

Index这个事自定义排序字段,系统里面有需要添加置顶广告的话,就可以用这个了!

 

三、关于SQL2005发邮件,我整理了一下,整理了一下T-SQL语句:

 我的项目不允许出现错误!所以在测试的时候,我希望他发生错误的时候,用电子邮件通知我

--数据库发送电子邮件
use master
go

exec sp_configure 'show advanced options',1
go

reconfigure
go

exec sp_configure 'Database mail XPs',1
go

reconfigure
go

--启用sql2005邮件功能完毕

exec msdb..sysmail_add_account_sp
        @account_name            = 'System'                 -- 邮件帐户名称(SQL Server 使用)
       ,@email_address           = '491217650@qq.com'  -- 发件人邮件地址
       ,@display_name            = 'MRhuo.System.Core'			-- 发件人姓名
       ,@replyto_address         = null
       ,@description             = null
       ,@mailserver_name         = 'smtp.qq.com'           -- 邮件服务器地址
       ,@mailserver_type         = 'SMTP'                    -- 邮件协议(SQL 2005 只支持 SMTP)
       ,@port                    = 25                        -- 邮件服务器端口
       ,@username                = '491217650@qq.com'  -- 用户名
       ,@password                = 'love'               -- 密码
       ,@use_default_credentials = 0
       ,@enable_ssl              = 0
       ,@account_id              = null

--创建账户完毕

exec msdb..sysmail_add_profile_sp @profile_name = 'dba_send_mail_profile'      -- profile 名称 
                                 ,@description  = 'Send mail when system has error!' -- profile 描述 
                                 ,@profile_id   = null

--在 SQL Server 2005 中添加 profile

exec msdb..sysmail_add_profileaccount_sp  @profile_name    = 'dba_send_mail_profile' -- profile 名称 
                                         ,@account_name    = 'admin'     -- account 名称 
                                         ,@sequence_number = 1             -- account 在 profile 中顺序 

--利用 SQL Server 2005 Database Mail 功能发送邮件。


exec msdb..sp_send_dbmail @profile_name =  'dba_send_mail_profile'               -- profile 名称 
                         ,@recipients   =  'admin@mrhuo.com'          -- 收件人邮箱 
                         ,@subject      =  'Ulanzhou.System.Core Has An Error' -- 邮件标题 
                         ,@body         =  'Hello Mail!It is a test'               -- 邮件内容 
                         ,@body_format  =  'TEXT'                      -- 邮件格式 格式也可以写成HTML的

 

执行上述SQL语句,SQL2005就支持发电子邮件了,还需要一个触发器!

触发器代码,如下:

USE [DotNetProject]
GO
/****** 对象:  Trigger [dbo].[send_error_to_admin]    脚本日期: 09/21/2011 15:12:48 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:		Www.MRHuo.com
-- Create date: 2011-9-20
-- Description:	发生错误给管理员发邮件
-- =============================================
ALTER TRIGGER [dbo].[send_error_to_admin] 
   ON  [dbo].[tbExceptionLog]
   AFTER INSERT
AS 
BEGIN
	declare @msg varchar(1000);
	declare @errmsg varchar(200);
	declare @errpath varchar(200);
	declare @errtype varchar(200);
	
	select @errmsg=ExceptionDescription,@errpath=ExceptionUser,@errtype=ExceptionType From tbExceptionLog Where EnabledAlert=1
	SET NOCOUNT ON;
    begin
		 select @msg=@errmsg+
				'<br />错误路径 :'+ @errpath+
				'<br />错误类型 :'+ @errtype+
				'<br />发生时间 :' + cast(getdate() as varchar(20));
         exec msdb..sp_send_dbmail @profile_name =  'dba_send_mail_profile'               -- profile 名称 
                         ,@recipients   =  'admin@mrhuo.com'          -- 收件人邮箱 
                         ,@subject      =  'MRHuo.System.Core Has An Error' -- 邮件标题 
                         ,@body         =  @msg               -- 邮件内容 
                         ,@body_format  =  'HTML'                      -- 邮件格式   
    end

END

这样的话,还需要一个自定义的捕捉异常的类,我们命名为CoreException把!

内容很简单,捕捉到异常就插入数据库!

这样,只要一插入捕捉到的异常数据,就触发触发器发电子邮件给我~是不是很爽啊!!欢迎交流!批评!指正!

(今天没时间了,改天再写)

 

 

转载于:https://www.cnblogs.com/MrHuo/archive/2011/09/21/2183837.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值