黑马程序员-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/

### 黑马程序员 C++ 教学内容概述 黑马程序员的 C++ 学习教程主要分为基础阶段和提高阶段两大部分。以下是具体的内容划分: #### 基础阶段:面向对象编程的核心与精髓 该部分内容专注于 C++ 面向对象编程的基础理论和技术细节,帮助学生掌握 C++ 的核心概念[^1]。 - **内存分区模型** 讲解程序运行时内存如何分配以及不同区域的作用,例如栈区、堆区、全局/静态存储区和常量区等。这部分对于理解变量生命周期至关重要。 - **其他基础知识** 包括但不限于类与对象的概念、继承机制、多态特性及其实际应用案例分析等内容未被提及但属于此类教学范畴的一部分。 #### 提高阶段:高级功能与实战项目 此阶段深入探讨更复杂的主题并提供实践机会来巩固所学到的知识点[^2]。 - **模板类部分** 掌握泛型编程技巧,能够创建适用于多种数据类型的通用组件。 - **STL(Standard Template Library)** 熟悉标准库容器(vector, list, map 等)、迭代器及算法的应用场景。 - **C++ 函数对象及 STL 常用算法** 学会定义自己的可调用实体,并灵活运用 sort(), find_if() 这样的高效工具解决复杂问题。 #### 实战演练 - 综合能力提升 通过完成一系列精心设计的真实世界模拟任务进一步增强学员解决问题的能力: - **通讯录管理系统**: 设计实现一个可以增删改查联系人的小型软件系统. - **职工管理系统**: 构建支持员工信息录入查询统计等功能的企业内部管理平台原型. - **演讲比赛流程管理系统**: 开发一套用于组织管理和评分记录自动化处理的比赛辅助工具. - **机房预约系统**: 创建允许用户在线预订计算机实验室座位时间表安排方案. ```cpp // 示例代码展示逻辑运算符 '&&' 使用方法 #include <iostream> using namespace std; int main(){ int a=10,b=10; cout << (a && b) << endl; // 输出结果为 true 即数值表示形式下的 1 a = 10;b=0; cout << (a && b) << endl; // 此处由于b值为false故整体表达式的布尔值也为 false 数字上显示为0 a=b=0; cout << (a && b) << endl; // 同理当ab均为零则最终判定亦然呈现假状态即打印出的是整数意义上的0 system("pause"); return 0; } ``` 上述例子展示了基本逻辑操作符 `&&` 如何工作于两个整型变量之间比较其真伪情况[^3].
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值