对于自己来说,面试时间需要熟练使用的几段代码(1)

                  想一下马上就要面对面试的节奏啦,其实我总是认为没什么的,要敢于面对,但是这样的前提还是自己要有足够的准备,于是还是在休息的时间自己在复习一下,今天看了一些老师还有友友给的面试题,顿时感觉信心倍增,可是都是一些基础性的东西,想要在面试的时间好好发挥需要更多的努力,可是现在的我们还有半个月的课程没有结束,确切说是在学习MVC,但是针对这个我还是很感兴趣的,喜欢接触新的事物是我永远不会改变的理念,下面就来总结一下我认为需要熟练掌握的一些程序吧。

            一.手写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("	" + 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();
        }
        /// <summary>
        /// 添加人
        /// </summary>
        /// <param name="p"></param>
        /// <returns></returns>
        public bool AddPersonMes(Person p)
        {
            return dal.AddPersonMes(p);
        }
        /// <summary>
        /// 删除
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public bool DelPersonMes(int id)
        {
            return dal.DelPersonMes(id);
        }
        /// <summary>
        /// 修改
        /// </summary>
        /// <param name="p"></param>
        /// <returns></returns>
        public bool UpdPersonMes(Person p)
        {
            return dal.UpdPersonMes(p);
        }
        /// <summary>
        /// 查询所有人
        /// </summary>
        /// <returns></returns>
        public DataTable GetPersonMes()
        {
            return dal.GetPersonMes();
        }
    }
public class PersonDal
    {
        /// <summary>
        /// 添加
        /// </summary>
        /// <param name="model">实体类</param>
        /// <returns></returns>
        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;
        }
        /// <summary>
        /// 删除
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        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;
        }
        /// <summary>
        /// 修改
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        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;
        }
        /// <summary>
        /// 查询所有人
        /// </summary>
        /// <returns></returns>
        public DataTable GetPersonMes()
        {
            string sql = "select id,name,age from tb_person ;";
            return SQLHelper.ExecuteDataTable(sql).Tables[0];
        }
    }

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

原文地址:https://www.cnblogs.com/dyxd/p/4321032.html