select * from customers where ((lastname=@lastname) or (lastname is null and @lastname is null))
上面语句检查了列是否为空和参数是否为空。
vii.传递null参数值
当你在命令中传递null参数值给数据库时,你不能使用null(nothing在vb中),应该使用dbnull.value。举例:
‘vb
dim param as sqlparameter = new sqlparameter(“@name”,sqldbtype.nvarchar,20)
param.value = dbnull.value
‘c#
sqlparameter param = new sqlparameter(“@name”,sqldbtype.nvarchar,20);
param.value = dbnull.value;
viii.使用事务处理
ado.net中的事务处理模型已经改变,在ado中,一旦starttransaction被调用,任何事务下的更新都被认为是事务的一部分。然而,在ado.net中,当connection.begintransaction被调用,返回一个命令关联的事务对象(事务属性是由命令的事务属性指定的)。这样保证让你在一个connection中执行多个事务。如果命令的command.transaction属性与开始的事务不一致,命令就不会完成并抛出错误。
ix.使用connections
高效率的应用程序应该使用最少的时间与数据库建立连接,比如使用connection pooling等。下面将介绍如何使用ado.net建立高效率应用的一些数据库方面的技巧。