A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 丁海平 中级黑马   /  2013-8-27 20:28  /  1732 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

一想到对数据库的操作,最先想到就是增删改查吧。
以前对数据库进行操作时,都有关闭操作,而视频中都没有,虽然知道肯定没错,但不知道为什么。今天发了一贴和自己查了一些资料终于搞清楚了:
原来使用using时,就是使用了dispose的方法,Dispose会自动检查是否调用了close,如果close了,就直接Dispose,如果没有close,就先调用close再Dispose。
在离开using程序块的时候,CLR会自动调用类型所创建对象的Dipose方法。
而以前Close只是关闭connection对象,还可以从新Open。但是dispose就不行了,因为它销毁了连接字符创。
这个解决了
  static void GetInsert()
        {
            using (SqlConnection sqlcon = new SqlConnection(Constr))
            {
                sqlcon.Open();
                using (SqlCommand command = sqlcon.CreateCommand())
                {
                    command.CommandText = "insert into Class(ClassNo,ClassName,CreateDate) values('5','火车',getdate())";
                    int result = command.ExecuteNonQuery();
                    if (result <= 0)
                    {
                        Console.WriteLine("插入失败!");
                    }
                    else
                    {
                        Console.WriteLine("插入成功!");
                    }
                }
            }
        }
这是插入的操作;下面是修改的操作:
  static void GetUpdate()
        {
            using (SqlConnection sqlcon = new SqlConnection(Constr))
            {
                sqlcon.Open();
                using (SqlCommand command = sqlcon.CreateCommand())
                {
                    command.CommandText = "update Class set ClassName='吃吃' where ClassNo=5";
                    int result = command.ExecuteNonQuery();
                    if (result <= 0)
                    {
                        Console.WriteLine("修改失败!");
                    }
                    else
                    {
                        Console.WriteLine("修改成功!");
                    }
                }
            }
        }
下面是:删除的操作:
static void GetDele()
        {
            using (SqlConnection sqlcon = new SqlConnection(Constr))
            {
                sqlcon.Open();
                using (SqlCommand command = sqlcon.CreateCommand())
                {
                    command.CommandText = "delete from Class where ClassNo=5";
                    int result = command.ExecuteNonQuery();
                    if (result <= 0)
                    {
                        Console.WriteLine("删除失败!");
                    }
                    else
                    {
                        Console.WriteLine("删除成功!");
                    }
                }
            }
        }

3 个回复

倒序浏览
嗯,这是ADO.NET里面的基础知识,实际项目中一般都用“面向对象”,发现一亮点getdate(),直接使用数据库里面的函数获取时间.。

点评

错了吗?  发表于 2013-8-27 22:46
回复 使用道具 举报
就是我 发表于 2013-8-27 22:18
嗯,这是ADO.NET里面的基础知识,实际项目中一般都用“面向对象”,发现一亮点getdate(),直接使用数据库里 ...

没有没有,我之前经常 DateTime.Now那样弄
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马