1、课程2上课日志3一、复习、为实例2-1实现添加修改功能之展示要修改的数据思考:更新页面的ID标签及相关代码是否可以不要?二、为实例2-1实现修改数据功能代码编写三、为实例2-1实现删除数据功能四、SqlHelper工具类的使用过程(以Lesson2项目实例2-1为例说明) 1、添加数据库连接字符串提取“公因式”,放到哪? web.config App.config 2、在程序中引用连接字符串如何用“公因式”public string constr = ConfigurationManager.ConnectionStringsconnectionStr.ConnectionString;/ 获取连接字符串需要先添加System.Configuration引用,然后引入命名控件using System.Configuration;五、使用SqlParameter进行参数化替换(防止注入式攻击)何为注入式攻击说明?Select * from AdminLogin where AdminName=admin and pwd=123456Select * from AdminLogin whe
2、re AdminName=admin and pwd=123456 or 1=1int id=1; string sql = select StuName,StuNum from Student where Id=id;SqlConnection con = new SqlConnection(constr);SqlCommand cmd = new SqlCommand(sql, con);SqlParameter par=new SqlParameter(id, id);cmd.Parameters.Add(par);变成“填空题”,不能改变语义!防止注入式攻击另一种方法:存储过程下个学期课程讲解六、文章阅读器(实例2-2)实例展示及数据库表的理解1、实例展示2、表字段含义3、外键约束关系七、为实例2-2设计界面及为配置文件添加连接字符串1、界面设计Form1(Text:阅读器)、treeView1、listBox1、textBox1(MultiLine:true)2、添加连接字符串注:若项目中配置文件(App.config)不存在。右击项目-添加-新建项-应用程序配置文件八、添加
3、工具类文件SqlHelper.cs及相关引用配置1、添加引用System.Configuration;2、引入命名控件 using System.Configuration;3、修改SqlHelper类为公共的、静态的public static class SqlHelper4、获取连接字符串九、为工具类文件SqlHelper.cs添加执行增删改方法ExecuteNonQuery(sql,pms)1、using()使用可以在数据库连接对象使用完后自动销毁。换句话说,就是使用using关键字定义一个范围,在范围结束时自动调用这个类实例的Dispose处理(释放非托管资源),不足之处:会造成频繁的连接关闭数据库,一般WinForm项目使用。 public static int ExecuteNonQuery(string sql, params SqlParameter pms) using (SqlConnection con = new SqlConnection(constr) using (SqlCommand cmd = new SqlCommand(sql,con) if (p
4、ms != null) cmd.Parameters.AddRange(pms); con.Close(); return cmd.ExecuteNonQuery(); 提问:params关键字的作用?2、思考:与command对象内部方法ExecuteNonQuery()区别。十、为SqlHelper.cs添加执行返回单个值、返回SqlDataReader及返回DataTable方法/执行返回单个值的 public static object ExecuteScalar(string sql, params SqlParameter pms) using (SqlConnection con = new SqlConnection(constr) using (SqlCommand cmd = new SqlCommand(sql, con) if (pms != null) cmd.Parameters.AddRange(pms); con.Open(); return cmd.ExecuteScalar(); 提问:这里返回值类型为什么用object类型? /执行返回SqlDat
5、aReader public static SqlDataReader ExecuteReader(string sql, params SqlParameter pms) /创建链接对象 SqlConnection con = new SqlConnection(constr); /创建执行命令对象 using (SqlCommand cmd = new SqlCommand(sql, con) if (pms != null) cmd.Parameters.AddRange(pms); try /打开链接 con.Open(); /指定操作 return cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);/关闭了DataReader对象时,则关联的Connection对象也关闭。 /报异常时关闭数据库销毁对象 catch (Exception) con.Close(); con.Dispose(); throw; /返回DataTable public static DataTable ExecuteDat
6、aTable(string sql, params SqlParameter pms) /创建本地数据库对象 DataTable dt = new DataTable(); /创建适配器对象 using (SqlDataAdapter adapter = new SqlDataAdapter(sql, constr) if (pms != null) adapter.SelectCommand.Parameters.AddRange(pms); / adapter.InsertCommand/ adapter.UpdateCommand/ adapter.DeleteCommand /读取数据填充到本地数据库对象中 adapter.Fill(dt); return dt; 讨论题:为配置文件添加连接字符串的优势是什么?如何添加及使用配置文件中的连接字符串?作业:1、为实例2-1配置文件添加连接字符串,并且把该实例中连接字符串都通过该连接字符串来实现2、通过DataReader获取数据库字段的数据时,char类型数据可以通过DataReader.GetString(N)来获取,int类型数据可以通过DataReader.GetInt32(N)来获取,N为数据库表中字段顺序号,那么数据库字段类型为float类型,如何获取?3、预习完实例2-24、编写一个能实现对数据库操作的工具类,该类中包含查询单个数据的方法、返回 SqlDataReader类型的方法、返回执行影响行数的方法以及返回 DataSet 类型的数据集的方法。(直接用记事本写或者通过vs平台写,然后把代码复制到记事本文件中,记事本文件名为学号后2位数加姓名)以上第4项10月18日(周三)之前通过蓝墨云班课电脑端上交。主要知识点:修改、删除数据、SqlHelper工具类的使用及执行增删改方法及执行返回单个值、返回SqlDataReader及返回DataTable方法、SqlParameter参数化替换(防止注入式攻击)
《课程2上课日志3》由会员 y****g分享,可在线阅读,更多相关《课程2上课日志3》请在金锄头文库上搜索。