博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一些面试题
阅读量:5218 次
发布时间:2019-06-14

本文共 5722 字,大约阅读时间需要 19 分钟。

   一.手写SQLHelper

public static class SQLHelper    {        //获取连接字符串 //属于静态变量且只读,项目中所有文档可以直接使用,但不能修改 private static readonly string connection = ConfigurationManager.ConnectionStrings["sql"].ToString(); public static int ExecuteNonQuery(string sql, CommandType cType, params SqlParameter[] parms) { //创建连接 using (SqlConnection conn = new SqlConnection(connection)) { //打开连接 conn.Open(); //创建command对象 using (SqlCommand cmd = new SqlCommand()) { //连接数据库 cmd.Connection = conn; //执行sql语句 cmd.CommandText = sql; //判断执行的是sql语句还是存储过程 cmd.CommandType = cType; //sql语句中的参数 cmd.Parameters.Add(parms); //延迟加载时间是5s cmd.CommandTimeout = 5; //返回受影响的行数 return cmd.ExecuteNonQuery(); } } } public static int ExecuteScalar(string sql, CommandType cType, params SqlParameter[] parms) { //创建连接 using (SqlConnection conn = new SqlConnection(connection)) { //打开连接 conn.Open(); //创建command对象 using (SqlCommand cmd = new SqlCommand()) { //连接数据库 cmd.Connection = conn; //执行sql语句 cmd.CommandText = sql; //判断执行的是sql语句还是存储过程 cmd.CommandType = cType; //sql语句中的参数 cmd.Parameters.Add(parms); //延迟加载时间是5s cmd.CommandTimeout = 5; //返回首行首列的值 return Convert.ToInt32(cmd.ExecuteScalar()); } } } public static DataTable ExecuteDataTable(string sql, CommandType cType, params SqlParameter[] parms) { //创建连接 using (SqlConnection conn = new SqlConnection(connection)) { //打开连接 conn.Open(); //创建command对象 using (SqlCommand cmd = new SqlCommand()) { //连接数据库 cmd.Connection = conn; //执行sql语句 cmd.CommandText = sql; //判断执行的是sql语句还是存储过程 cmd.CommandType = cType; //sql语句中的参数 cmd.Parameters.Add(parms); //延迟加载时间是5s cmd.CommandTimeout = 5; DataTable dt = new DataTable(); //创建适配器对象 using (SqlDataAdapter adapter = new SqlDataAdapter()) { adapter.Fill(dt); return dt; } } } } public static SqlDataReader ExecuteReader(string sql, CommandType cType, params SqlParameter[] parms) { //创建连接 SqlConnection conn = new SqlConnection(connection); //打开连接 conn.Open(); //创建command对象 using (SqlCommand cmd = new SqlCommand()) { //连接数据库 cmd.Connection = conn; //执行sql语句 cmd.CommandText = sql; //判断执行的是sql语句还是存储过程 cmd.CommandType = cType; //sql语句中的参数 cmd.Parameters.Add(parms); //延迟加载时间是5s cmd.CommandTimeout = 5; //返回读取的数据,在这里由于reader是一条一条数据的读取,而且独占一连接,当我们读取完数据时间要断开链接 return cmd.ExecuteReader(CommandBehavior.CloseConnection); } } }

                       虽然之前也写过好多次的,但是我那时间只是一味的实现其功能,甚至注释的都没有写,也可能是不注重在这方面的更多的练习吧,今天我只是想能够更加深入的理解SQLHelper中的方法以及实现了那些功能。                          二.冒泡排序

public static void BubbleSortt(this int[] arr) { for (int i = 0; i < arr.Length; i++) { for (int j = 0; j < arr.Length - 1 - i; j++) { if (arr[j] > arr[j + 1]) { //比较两个数 int temp = arr[j + 1]; //此时temp为较小的值 arr[j + 1] = arr[j]; //把最大的值放在后面的一位上面 arr[j] = temp; //a=b;b=c;c=a; } } } } static void Main(string[] args) { int[] arry = new int[] { 1, 2, 3, 4, 1, -1 }; //调用扩展方法 arry.Bubble(); //遍历输出排序后的数组 for (int i = 0; i < arry.Length; i++) { Console.Write("\t" + arry[i]); } Console.Read(); }

                       嘿嘿,写到冒泡排序,不得不说一下我学习扩展方法的心理,刚开始学习时间就是感觉蛮神奇的,自己还可以在微软提供好的代码下增加一些方法,但是后来感觉很是不适应的,现在可以说前几天就是看到友友写的冒泡排序我拿过来使用竟然没看出来是扩展方法直接像普通的方法一样调用,忽略了this,那时间还问友友他是不是调用方法使用新的语法,后来才知道我竟然忘记了,于是又重新学习了一下扩展方法感觉甚是简单,也可能是自己实现的功能简单,但是从根本上面我终于理解了扩展方法,还是蛮激动的。

            三.使用三层架构实现增删改查

[TestClass]    public class UnitTest1    {         private PersonDal dal; public UnitTest1() { //查询数据 dal = new PersonDal(); } [TestMethod] public void AddPersonTest() { //添加数据 Person p = new Person() { Name="lala", Age=22 }; bool result = dal.AddPersonMes(p); Assert.IsTrue(result); } [TestMethod] public void DeletePersonTest() { //删除数据 bool result = dal.DelPersonMes(2); Assert.IsTrue(result); } [TestMethod] public void UpdateTest() { //修改数据 Person p = new Person() {ID=1, Name = "xixi", Age = 23}; bool result = dal.UpdPersonMes(p); Assert.IsTrue(result); } }

 

public class PersonBll    {        private DAL.PersonDal dal;        public PersonBll() { dal = new PersonDal(); } ///  /// 添加人 ///  ///  /// 
public bool AddPersonMes(Person p) { return dal.AddPersonMes(p); } /// /// 删除 /// /// ///
public bool DelPersonMes(int id) { return dal.DelPersonMes(id); } /// /// 修改 /// /// ///
public bool UpdPersonMes(Person p) { return dal.UpdPersonMes(p); } /// /// 查询所有人 /// ///
public DataTable GetPersonMes() { return dal.GetPersonMes(); } }

 

public class PersonDal    {        ///         /// 添加 ///  /// 实体类 /// 
public bool AddPersonMes(Person model) { string sql = "insert into TB_Person values(@Name,@Age)"; SqlParameter[] parms = { new SqlParameter("@Name",model.Name), new SqlParameter("@Age",model.Age) }; return SQLHelper.ExecuteNonQuery(sql,CommandType.Text, parms) > 0; } /// /// 删除 /// /// ///
public bool DelPersonMes(int id) { string sql = "delete from tb_person where id=@id"; SqlParameter parms = new SqlParameter("@id", id); return SQLHelper.ExecuteNonQuery(sql, CommandType.Text, parms) > 0; } /// /// 修改 /// /// ///
public bool UpdPersonMes(Person model) { string sql = "update tb_person set name=@name,age=@age where id=@id"; SqlParameter[] parms = { new SqlParameter("@Name",model.Name), new SqlParameter("@Age",model.Age), new SqlParameter("@id",model.ID) }; return SQLHelper.ExecuteNonQuery(sql, CommandType.Text, parms) > 0; } /// /// 查询所有人 /// ///
public DataTable GetPersonMes() { string sql = "select id,name,age from tb_person ;"; return SQLHelper.ExecuteDataTable(sql).Tables[0]; } }

         嘿嘿,上面就是使用三成架构实现的增删改查,其实刚开始一直在使用WebForm实现三层,这样想要在一个小时内写完这个我没能完成,当然使用EF就简单的多啦,可以说五倍的效率,但是如果让使用ADO.net实现时间,最好使用单元测试就可以节约时间啦,不用为拖拉服务器端控件而浪费时间,这样我们在面试时间也可以有更多的时间回答其他的题啦,好啦今天就写到这里,加油加油!时间仅仅剩下15天,可以说倒计时就要面临面试,我会努力的。

/ \`\          __      |  \ `\      /`/ \      \_/`\  \-"-/` /\  \           |       |  \  |           (d     b)   \_/           /       \        ,".|.'.\_/.'.|.",      /   /\' _|_ '/\   \      |  /  '-`"`-'  \  |      | |             | |      | \    \   /    / |       \ \    \ /    / /        `"`\   :   /'"`            `""`""`    快快乐乐大兔子~☺

转载于:https://www.cnblogs.com/eric-zeng/p/4321162.html

你可能感兴趣的文章
matconv-GPU 编译问题
查看>>
推荐 | 掌握这12条经验,对理解机器学习至关重要!
查看>>
Spring DI
查看>>
c++ map
查看>>
exit和return的区别
查看>>
ThinkPHP5.1安装
查看>>
在Mac OS X中搭建STM32开发环境(2)
查看>>
vi 常用命令
查看>>
js += 含义(小知识)
查看>>
B2321 [BeiJing2011集训]星器 数学&&物理
查看>>
反馈的基础概述
查看>>
使用python绘制根轨迹图
查看>>
Xammp修改端口
查看>>
201571030319 四则运算
查看>>
RestTemplate 调用本地服务 connection refused
查看>>
简单粗略的三级字典
查看>>
JITCompiler、NGen.exe及.NET Native
查看>>
.NET方向高级开发人员面试时应该事先考虑的问题
查看>>
对Java抽象类的简单理解
查看>>
欢迎使用f MWeb
查看>>