ADO.NET第2讲
一、再大的网站也是CRUD堆积成的
CRUD:CREATE、READ、UPDATE、DELETE
项目的属性中在WEB也签中甚至特定页面启动,再设置端口就可以直接运行某一页面。
二、CRUD的处理模式
1、数据库连接
2、打开链接
3、执行SQL命令
4、关闭链接
5、释放内存
三、调试-优化程序
1、打断点,一步一步调试。
2、打开链接时要尽量减少链接持续的时间,与链接无关的一定要放在OPEN之外。
四、增、删、改
1、删除:可根据业务需求做物理删除或逻辑删除。
2、ButtonField:在GridView中添加按钮
3、参数化:使用@开头的参数来替代SQL中的可变内容的方法,可以防止SQL注入。
如:string strSql = "DELETE FROM RNews WHERE NewsId=@NewsId;";
using (con = new SqlConnection(strCon))
{
con.Open();
cmd = new SqlCommand(strSql, con); //建立CMD对象
cmd.Parameters.Add(new SqlParameter("@NewsId", newsId)); //给CMD对象追加一个参数:@NewsId
int num= cmd.ExecuteNonQuery(); //没有返回的执行SQL命令的方法,他只返回受影响的行数。
}
4、在一个SQL语句结束时最好用【;】来结束,这样如果多个SQL命令时自然就以【;】分割。
5、增、删、改使用的程序结构完全一样的,只是SQL命令不同。
6、自增ID或TimeStamp都不需要在INSERTER语句中指定,原因是系统自动添加这几个种类的数据。
五、Command对象
1、ExecuteNonQuery: 执行增删改语句,返回值为该命令所影响的行数。
2、ExecuteReader: 执行查询,并返回一个 DataReader 对象。
3、ExecuteScalar: 执行查询,返回查询数,通常用于Count的情况。
六、防SQL注入
用户输入的值或可变的值用参数来传递,这时参数中的内容永远不会当SQL命令来运行。
** 参数化查询时课题提高执行计划的利用率,提高整体运行时间。
** 在写代码过程中快速规范化代码的方法:Ctrl+K+F
2015-11-03 第26课 ADO.NET3
一、DataReader和DataSet的区别
1、DataReader是只能顺序向前读取的数据结构,占据内存较少,速度较快;DataSet是一次性读入内存后动态(dynamic)方式处理记录(可正向反向兑取数据,也可以指定记录读取)的数据结构,占据内存较多,相对速度较慢。
2、DataReader处理数据时需要一直连接数据库,但DataSet读取数据后不需要连接数据库。
3、DataReader只能对一个结果集进行处理,但DataSet里可以存储多个结果集(DataTable)。
4、DataReader不能缓存,但dataSet可以对数据进行缓存。
二、SqlHelper
事先把常用的ADO.NET程序功能写好放在SqlHelper里,使用时直接调用,缩短开发时间,减少代码的书写量。
ExecteNonQuery、ExecuteDataSet、ExecuteScalar...等常用功能事先做封装好,需要时调用。
三、IsPostBack
当网页有回发要求时区分第一次回发和其他操作引起的回发请求。
四、控件点击事件
OnClick :服务器端点击事件
OnClientClick :客户端点击事件
** 先执行客户端点击事件,再执行服务器端点击事件。
五、页面之间传递参数的方法:Get传值
在页面URL后面加[?]再加参数名=参数值的方式传递。
如:<a href="NewsPage.aspx?newsid=<%#Eval("NewsId")%>">详情</a>
<%#Eval("NewsId")%>"> :绑定当前行的NewsId字段值。
六、获取后台程序中的某个变量值
如:<%=GetNews()%> //在html中获取GetNews()所返回的值
** 字符串拼凑方式可以获得任何一种网页。
** 读取DataSet里Tables中的某个字段值的方法
dt.Rows[0][Title].ToString() //获得DataSet里dt表中第一个记录中叫Title的字段的字符串值