一、关于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把!
内容很简单,捕捉到异常就插入数据库!
这样,只要一插入捕捉到的异常数据,就触发触发器发电子邮件给我~是不是很爽啊!!欢迎交流!批评!指正!
(今天没时间了,改天再写)