C#复习笔记(二)
时间:2010-10-08 来源:SkyPurple
结束于 异常处理 未听讲
异常:是当程序发生错误时产生的一种信号
每种异常的类型都是一个类
两种大分类:
System.SystemException System-definde exception 系统异常
System.ApplicationException user-defined exception 用户自定义异常
当程序产生一个异常的时候, 它会自动抛出异常,此时,.net进入"异常处理模式"
空的catch段相当于给异常放行,想要让异常处理继续,需要在catch里面写具体的方法
在进行完catch子句后,程序将继续进行。
除非在catch子句中有return throw 或者System.Enviroment.Exit(1);
跟踪:Tracing
最常用的方法是在.net config中配置
<appSettings>
<add key="Tracing" value="true"/>
</appSettings>
跟踪执行:实例
using T = system.Diagnostics.Trace;
public class DataAccess
{
.......
public void open()
{
try{
T.WriteLineIf(Globals.Trace,"DataAccess.Open():");
T.Indent();
T.WriteLineIf(Globals.Trace,"Connection string=....");
......
}
catch(Exception ex)
{
T.WriteLineIf(Globals.Trace,ex.GetType()+":"+ex.Message);
T.WriteLineIf(Globals.Trace,ex.StackTrace);
.....
}
finally{
T.Unindent();
T.Flush();
}
}
}
事件处理总结:
可以“多对一”进行事件处理
:不同的事件可以对应到相同的处理程序
可以“一对多”进行事件处理
:一个事件可以触发多个动作(事件处理器映射)
Transacation--事务
Command对象的BeginTransaction来创建一个Transacation对象
例子:
SQLSqlTransacation txn = dbConn.BeginTransacation();
string strSQL = "Insert into Customers
VALUES(100,'xx','xxx',10000,1000)";
SQLSqlCommand dbCmd = new SQLSqlCommand(strSQL,dbConn,txn);
int intRecord = dbCmd.excetuteNonQuery();
if(intRecord == 1)
{
MessageBox.Show("Update SuccessFul");
txn.Commit();
}
else
{
MessageBox.Show("Update Failed");
txn.Rollback();
}
解释:
当数据库操作返回数据正确或者无异常时候,才提交数据,txn.Commit();
此时才是真正的插入到数据库中。
当数据库操作返回数据不正确或者有异常时,回滚数据,txn.Rollback();
此时中断所有操作,并且把在事务中的所有操作取消回滚。。
C#代码中使用正则:
模式:^表示开始,?可选,$结束
using RE = System.Text.RegularExpressions.Regex;
public class Validation
{
public static bool isUSZipcode(string s)
{
string pattern;
pattern = @"^(\d{5})((\-\d{4})?)$";//正则用字符串表示
return RE.Match(s,pattern).Success;//调用正则类的Match方法来验证
传入的s是否符合正则,返回true或false
}
}
防止SQL输入攻击:对于文本框的输入,必须把单引号转换成双引号
(说明:因为SQL语句会把单引号的内容当成一个值)
组件开发 .dll文件
使用internal关键字来限制访问,任何被标识为internal的代码只能被组件内部访问
在类库中的Assembly中(程序集)信息中能控制组件的版本
强命名(Strong name)
Assembly 在.NET的命名有四部分
DataComponent,
Culture=neutral,
version=1.0.0.0,
publickeyToken=1231435465
Assembly如果有公钥token,那么它有强命名,这表示它被私钥数字签名过。
强命名的好处:
安全性,组件无法篡改
组件的多个版本可以共存!
应用程序可以使用它建立时的组件版本,而不是第一个找到的DLL。
创建强命名组件的步骤:
1。生成一组public - private key pair
2。将其通过Assemblyinfo.cs的属性应用到组件中
3。重新编译assembly
3。重新编译客户端
使用SN命令行用法。。
SN.exe -k pubpriv.key 生成
延迟签名:AssemblyDelaySign(true)
异常:是当程序发生错误时产生的一种信号
每种异常的类型都是一个类
两种大分类:
System.SystemException System-definde exception 系统异常
System.ApplicationException user-defined exception 用户自定义异常
当程序产生一个异常的时候, 它会自动抛出异常,此时,.net进入"异常处理模式"
空的catch段相当于给异常放行,想要让异常处理继续,需要在catch里面写具体的方法
在进行完catch子句后,程序将继续进行。
除非在catch子句中有return throw 或者System.Enviroment.Exit(1);
跟踪:Tracing
最常用的方法是在.net config中配置
<appSettings>
<add key="Tracing" value="true"/>
</appSettings>
跟踪执行:实例
using T = system.Diagnostics.Trace;
public class DataAccess
{
.......
public void open()
{
try{
T.WriteLineIf(Globals.Trace,"DataAccess.Open():");
T.Indent();
T.WriteLineIf(Globals.Trace,"Connection string=....");
......
}
catch(Exception ex)
{
T.WriteLineIf(Globals.Trace,ex.GetType()+":"+ex.Message);
T.WriteLineIf(Globals.Trace,ex.StackTrace);
.....
}
finally{
T.Unindent();
T.Flush();
}
}
}
事件处理总结:
可以“多对一”进行事件处理
:不同的事件可以对应到相同的处理程序
可以“一对多”进行事件处理
:一个事件可以触发多个动作(事件处理器映射)
Transacation--事务
Command对象的BeginTransaction来创建一个Transacation对象
例子:
SQLSqlTransacation txn = dbConn.BeginTransacation();
string strSQL = "Insert into Customers
VALUES(100,'xx','xxx',10000,1000)";
SQLSqlCommand dbCmd = new SQLSqlCommand(strSQL,dbConn,txn);
int intRecord = dbCmd.excetuteNonQuery();
if(intRecord == 1)
{
MessageBox.Show("Update SuccessFul");
txn.Commit();
}
else
{
MessageBox.Show("Update Failed");
txn.Rollback();
}
解释:
当数据库操作返回数据正确或者无异常时候,才提交数据,txn.Commit();
此时才是真正的插入到数据库中。
当数据库操作返回数据不正确或者有异常时,回滚数据,txn.Rollback();
此时中断所有操作,并且把在事务中的所有操作取消回滚。。
C#代码中使用正则:
模式:^表示开始,?可选,$结束
using RE = System.Text.RegularExpressions.Regex;
public class Validation
{
public static bool isUSZipcode(string s)
{
string pattern;
pattern = @"^(\d{5})((\-\d{4})?)$";//正则用字符串表示
return RE.Match(s,pattern).Success;//调用正则类的Match方法来验证
传入的s是否符合正则,返回true或false
}
}
防止SQL输入攻击:对于文本框的输入,必须把单引号转换成双引号
(说明:因为SQL语句会把单引号的内容当成一个值)
组件开发 .dll文件
使用internal关键字来限制访问,任何被标识为internal的代码只能被组件内部访问
在类库中的Assembly中(程序集)信息中能控制组件的版本
强命名(Strong name)
Assembly 在.NET的命名有四部分
DataComponent,
Culture=neutral,
version=1.0.0.0,
publickeyToken=1231435465
Assembly如果有公钥token,那么它有强命名,这表示它被私钥数字签名过。
强命名的好处:
安全性,组件无法篡改
组件的多个版本可以共存!
应用程序可以使用它建立时的组件版本,而不是第一个找到的DLL。
创建强命名组件的步骤:
1。生成一组public - private key pair
2。将其通过Assemblyinfo.cs的属性应用到组件中
3。重新编译assembly
3。重新编译客户端
使用SN命令行用法。。
SN.exe -k pubpriv.key 生成
延迟签名:AssemblyDelaySign(true)
相关阅读 更多 +