黑马程序员-using的好处

---------------------- Windows Phone 7手机开发.Net培训、期待与您交流! ----------------------

        在ado.net编程中为了更好的利用内存资源,我们要及时的释放那些不用的资源和内存空间;

        微软提倡我们尽可能每次的在连接使用完成以后就关闭,这样每次在每次使用完成以后都要加上con.Close()和con.Dispose();至于Close()和Dispose()的区别呢,下面我来简述一下:

Close()的作用是关闭当前数据库连接,但是关闭了以后还能通过Open()来重新打开连接,就像自来水管中的水龙头的作用一样;

Dispose()的作用和Close()一样虽然都是关闭连接,但是Dispose()关闭的更彻底,它是将资源释放,就像上面例子一样,它是将自来水管以及水龙头一并撤走了,不存在了;

当然在调用Dispose()的时候它会自动检查连接有没有Close(),没有关闭的话就先关闭然后再释放资源,清空内存中不在使用的空间;

       这样就有一个弊端,当我们在使用完连接以后我们忘掉Close和Dispose的时候怎么办?这样难免会造成资源的浪费,造成空间的堵塞;虽然C#中有垃圾回收机制,但是到底什么时候回收,我们就不知道了;所以每次使用完连接后给它Close和dispose难免会造成麻烦,所以我们就要去考虑using的使用了,使用using后,我们不必每次都去加上close和dispose这些代码,使用using后,在每次连接使用完成后,它会自动的去调用Dispose()方法,这样就杜绝了资源的浪费。下面是一小段使用using的代码块,它的好处不言而喻了:

 class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("请输入用户名:");
            string username = Console.ReadLine();
            Console.WriteLine("请输入密码:");
            string password = Console.ReadLine();

            using (SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=D:\My Documents\Visual Studio 2008\Projects\ado.net连接数据库\ado.net连接数据库\Database1.mdf;Integrated Security=True;User Instance=True"))
            {
                conn.Open();
                using (SqlCommand cmd = conn.CreateCommand())
                {
                    
                    //cmd.CommandText = "select count(*) from T_Users where UserName='" + username + "' and Password='" + password + "'";
                   

                    cmd.CommandText = "select count(*) from T_Users where UserName=@UID and Password=@PWD";
                    cmd.Parameters.Add(new SqlParameter("UID",username));
                    cmd.Parameters.Add(new SqlParameter("PWD",password));
                     //防SQL注入漏洞

                    int i = Convert.ToInt32( cmd.ExecuteScalar());
                    if (i > 0)
                    {
                        Console.WriteLine("登陆成功!");
                    }
                    else
                    {
                        Console.WriteLine("用户名或密码错误!");
                    }
                }
            }

            Console.ReadKey();
        }
    }


 

---------------------- Windows Phone 7手机开发.Net培训、期待与您交流! ----------------------详细请查看:http://net.itheima.com/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值