SqlDataSource概论
SqlDataSource就像代码生成器,你只要定义好所需的sql语句,就能方便从数据库提取数据到.net。
你定义的最常见sql语句是select * from table where id=@id
而@id可以从1.控件参数,例如textbox.text;2.窗体参数,例如网页中的某个HTML Input的value值;3.web.config里面的配置参数;4.session和cookie参数;5.查询字符串参数;6.当然你也可以在.aspx.cs文件里自定义参数。
那么post传递的参数呢?暂时不知道。
既然可以从sql语句提取查询结果,那么也可以从存储过程中提取查询结果。当然少不了和存储过程的输入和输出参数相配套的操作接口,以及受影响的行数返回。
select * from table where (id=IsNull(@id,id))表示,如果没有设置@id的参数,则最终执行select * from table。
SqlDataSource有个DataSourceMode 属性,它就两个属性值DataSet和DataReader。
设置成DataReader,读取数据库快速,只限于读取。因为DataReader读取的数据,不会保持在内存中。
设置成DataSet,GridView这些数据绑定控件,就可以方便设置分页,排序,增删改功能。
SqlDataSource有个筛选属性,FilterExpression。
原理是,把数据库的数据加载到内存中,根据筛选条件,直接在内存中筛选。
因此,设置DataSourceMode为DataSet,设置缓存属性。
还有就是SqlDataSource执行错误的Sql语句(比如查询不存在的表),或者其它错误,的处理办法。
根据SqlDataSource的Selected事件,和e.Exception来判断。
当有SqlDataSource执行错误时,或者执行参数不对,要取消SqlDataSource的执行,用e.Cancel属性。
最后就是SqlDataSource的缓存属性,可以设置缓存几秒,以及两种缓存策略。
总结:引入可视化操作机制,使数据库操作更便捷;引入事件机制,来使数据库操作可可靠。引入缓存机制提升读取数据性能。
可视化操作机制包括,带参数的增删查改和带输入和输出参数的存储过程。
事件机制包括,操作前,操作后的验证,数据类型转换,取消操作。
缓存机制包括,提升数据读取性能,便于筛选,便于数据绑定控件操作。
合乎自然而生生不息。。。