走进ADO.NET的世界

  ADO.NET通过封装一些对象来实现C#与数据库的连接,其实就是一个桥梁。

  下面先通过SQL Server来看ADO.NET是怎么样具体连接数据库的。

  首先看一下在Visual Studio中创建数据库(Visual Studio内置一个数据库服务器)

  在视图上打开服务器资源管理器,在Visual Studio左边会看到

  右键数据库连接,创建数据库

  其中的.代表本地服务器,新创建的数据名字PersonDB,创建一个人Persons表,三个字段ID整形自动增长为主键,一个PersonName,nvarchar(15),存储人的姓名,PersonAge整形存储人的年纪。好了表创建好了,接下来就看看怎样把它同程序进行连接,来实现数据库的增删改查。

  创建一个windowForm程序,界面如下:

  我们先来实现添加操作,首先引用命名空间:using System.Data.SqlClient;

  首先先来连接数据库,通过SqlConnection创建连接对象。

SqlConnection con = new SqlConnection();//创建连接对象

  要想连接数据库,首先要知道你是要连接哪一个服务器,数据库名称等等。

1. con.ConnectionString = "server=.;database=persondb;uid=sa;pwd=sa";

2. //分别表示服务器名称、数据库名称、登录用户名及密码

  接下来创建sql命令对象:

1. SqlCommand cmd = con.CreateCommand();//sql命令对象,表示要对sql数据库执行一个sql语句

2. cmd.CommandText = "insert into persons(personname,personage) values(@name,@age)";

3. //sql语句@name,@age表示两个参数

4. cmd.Parameters.Add("@name", SqlDbType.NVarChar).Value = textBox1.Text;

5. //给参数赋值,并指定类型

6. cmd.Parameters.Add("@age", SqlDbType.Int).Value = textBox2.Text;

7. con.Open();//打开连接

8. cmd.ExecuteNonQuery();

9. //执行不是查询的sql语句

10. MessageBox.Show("
插入成功!");

  打开数据库连接一定要记得关闭连接:

1. catch (Exception ex)//由于sql语句对半全角很敏感,捕捉异常

2. {

3. MessageBox.Show(ex.Message);

4. }

5. finally

6. {

7. con.Close();//不管打开成功还是失败,都能关闭连接

8. }

  好了,到这一步插入操作做完了,接下来看一下能不能往表中插入数据。

  点击添加,我们去Persons表中看一下有没有成功插入数据

  我们看到张三被成功添加进去了,我们再来多添加几条数据。

  接下来看一下查询操作怎么做,其实和插入操作没多大区别,只是多了一个SqlDataReader读者对象:下面来看一下源代码:

1. try

2. {

3. con.ConnectionString = "server=.;database=persondb;uid=sa;pwd=sa";

4. //分别表示服务器名称、数据库名称、登录用户名及密码

5. SqlCommand cmd = con.CreateCommand();

6. cmd.CommandText = "select id,personname,personage from persons";

7. //查询所有

8. con.Open();

9. SqlDataReader dr = cmd.ExecuteReader();//提供一种从 SQL Server 数据库读取行的只进流的方式

10. listBox1.Items.Clear();//清除listbox数据

11. comboBox1.Items.Clear();//清除combox数据

12. while (dr.Read())//一行一行读取数据,返回值是bool类型

13. {

14. listBox1.Items.Add("姓名:"+dr.GetValue(1).ToString() + " 年龄:"+dr.GetValue(2).ToString());

15. comboBox1.Items.Add(dr.GetValue(0));//把ID放到combox中,方便删除及修改

16. }

17. dr.Close();//关闭读取流操作

18. }

19. catch (Exception ex)

20. {

21. MessageBox.Show(ex.Message);

22. }

23. finally

24. {

25. con.Close();

26. }

  来看一下查询结果:

  接下来在来实现删除操作,和插入几乎一样,先从数据库中查询出所有数据,获得它们的ID(都放到combox里面了)

  下面看一下具体实现:

1. try

2. {

3. con.ConnectionString = "server=.;database=persondb;uid=sa;pwd=sa";

4. SqlCommand cmd = con.CreateCommand();

5. con.Open();

6. cmd.CommandText = "delete persons where id=@id";//删除语句,已ID为条件删除

7. cmd.Parameters.Add("@id", SqlDbType.Int).Value =comboBox1.Text;

8. cmd.ExecuteNonQuery();

9. }

10. catch (Exception ex)

11. {

12. MessageBox.Show(ex.Message);

13. }

14. finally

15. {

16. con.Close();

17. }

  先查询,

  选择删除ID,

  点击删除,再来查询一下

  我们看到朱重八被删除了。

  最后来做修改,这个比较麻烦,首先要修获得要修改的数据,先获得所有数据,在通过ID来实现查询当个数据,然后在确定修改

  看修改查询代码:

1. try

2. {

3. con.ConnectionString = "server=.;database=persondb;uid=sa;pwd=sa";

4. SqlCommand cmd = con.CreateCommand();

5. cmd.CommandText = "select personname,personage from persons where id=@id";

6. cmd.Parameters.Add("@id",SqlDbType.Int).Value = comboBox1.Text;

7. con.Open();

8. SqlDataReader dr = cmd.ExecuteReader();

9. dr.Read();//因为只读一条数据,就
不用while循环

10. textBox1.Text = dr.GetValue(0).ToString();

11. textBox2.Text = dr.GetValue(1).ToString();

12. dr.Close();

13. }

14. catch (Exception ex)

15. {

16. MessageBox.Show(ex.Message);

17. }

18. finally

19. {

20. con.Close();

21. }

  再来看一下确定修改代码:

1. try

2. {

3. con.ConnectionString = "server=.;database=persondb;uid=sa;pwd=sa";

4. SqlCommand cmd = con.CreateCommand();

5. con.Open();

6. cmd.CommandText = "update persons set personname=@name,personage=@age where id=@id";

7. cmd.Parameters.Add("@id", SqlDbType.Int).Value = comboBox1.Text;

8. cmd.Parameters.Add("@name",SqlDbType.NVarChar).Value=textBox1.Text;

9. cmd.Parameters.Add("@age", SqlDbType.NVarChar).Value = textBox2.Text;

10. cmd.ExecuteNonQuery();

11. }

12. catch (Exception ex)

13. {

14. MessageBox.Show(ex.Message);

15. }

16. finally

17. {

18. con.Close();

19. }

  好了,我们先查询全部信息,在通过ID获得修改信息

  把名字改成,七匹马,确定修改,再来查询一下是否修改成功

  现在可以看到修改成功了。

  到这里,基础性的东西都讲完了,还有SqlDataAdapter,DataTable类,下次在讲。

时间: 2024-10-04 09:40:55

走进ADO.NET的世界的相关文章

带你走进神奇的内容世界

摘要: 上次笔者已经提到关于外链的一些渠道以及一些网站SEO过程中碰到的相关的一些外链误区.今天,就让笔者带大家走进神奇的内容世界. 外链与内容的重要性笔者已经不需要再提及,但 上次笔者已经提到关于外链的一些渠道以及一些网站SEO过程中碰到的相关的一些外链误区.今天,就让笔者带大家走进神奇的内容世界. 外链与内容的重要性笔者已经不需要再提及,但是今年以来各种打击外链的措施出台.直接导致总舵站长感叹:现在还有可以发外链的地方么?于是,越来越多的站长把重心放在了网站的内容建设上.那内容到底为什么重要

世界精神卫生日走进精神病患者的艺术世界

南都讯 记者尹来 林宏贤通讯员肖建喜 昨天是世界精神卫生日,广东精神病人第二届原生艺术在大学城广州中医药大学开幕,300多幅精神病患者自发创作的作品在这里展出. 记者在现场注意到,此次展出作品中,大部分作者都是高中学历,但也有几位作者学历在大本以上.其中,有位硕士研究生学历的冼女士,就画了坐在热气球上的两个人,却互相背对着,彼此之间不理不睬."这位女士通过画来展现她现实中的婚姻生活对她的伤害." 广州中医药大学经管学院院长邱鸿钟表示,"数据显示,高学历中患精神病的人数,并不比

ADO.NET Entity Framework 4中枚举的使用

  本文将通过ADO.NET Entity Framework 4中枚举的使用介绍,带领大家走进ADO.NET的世界. 枚举(Enum)是一种常用的类型,如用于表示状态.类型等参数.但目前它不会被官方地在ADO.NET Entity Framework中进行支持.本文介绍的是通过复杂类型(Complex Types)在ADO.NET Entity Framework 4中使用枚举. 这种方法需要使用POCO类,而不能使用Visual Studio自动生成的类.因为我们需要手动为复杂类型编写代码.

智能手环走进童话故事,迪士尼让你感受现实世界魔法传奇

猎云网注:最近Apple Watch火爆异常,可穿戴设备席卷市场,迪士尼魔法腕带也趁这股风潮出来露脸了.想你所想,超前服务,景点全把握,带给人零压力,零烦恼的游玩体验!这一次,迪士尼让你感受现实世界里的魔法传奇! 如果你也在想象不久的未来会是什么样子,不妨跟我一起来憧憬一下.几年以后,手机已荣升为个人贴身管家,除管理财务外,还是有力的身份验证.它身兼多职,神通广大,我们可以通过它直接订票,飞往奥兰多迪士尼世界,还可以通过它在Be Our Guest餐厅预定席位,使用迪士尼世界App提前点餐. 走

photoshop合成绚丽的星光都市夜景

本教程效果将带你走进一个梦幻的世界.点点的繁星闪烁在城市的上空.此时的极光把整个画面照映的如此绚丽,以至于可爱的小女孩如此迷恋... 本教程效果将带你走进一个梦幻的世界.点点的繁星闪烁在城市的上空.此时的极光把整个画面照映的如此绚丽,以至于可爱的小女孩如此迷恋...效果确实不错,用到的素材也较多,处理的时候一定要细心. 最终效果 1.新建一个700 * 500像素的文件,背景填充黑色(由于素材图都是缩小图,新建的文件不能太大). 2.打开下图所示的城市素材,拖到新建的文件里面,调整大小和位置.

如何创建局域网?

创建局域网的基本目地是实现资源共享,更重要的是通过组建局域网来构建娱乐平台,利用局域网来打CS,玩魔兽......那种同乐的心情不言而喻;对来企业来说,通过组建局域网,能够实现统一化的管理,加快产品的研发进程,从而满足企业内部的交流和互动;利用局域网实现共享上网,在节省网费的同时也提高了资源利用率.既然局域网有这么多的好处,那么对于新手来说,学会组建局域网必将成为必备之知识.下面笔者将带领大家走进局域网的奇妙世界,进行高效快捷的组网操作. 工具/原料 两台及以上电脑,并且安装网卡 集线器或路由器

避免OOP的形式,POP的思想

避免OOP的形式,POP的思想 好久没发技术性文章了,今天在21PHP里看到有位兄弟发了这贴子,转了过来.对加强OOP的学习有些用 ----------------------------------------------------------避免OOP的形式,POP的思想随着PHP对OOP(面向对象编程)支持的增强以及程序设计思想的发展,越来越多的PHP程序员走进了OOP的世界.通过简单的学习,大多数程序员都能 快速的掌握OOP编程的基本技能.程序员们所写的代码里class,new等字符串

Oracle数据安全面面观(一)

oracle|安全|数据     随着计算机的普及以及网络的发展,数据库已经不再仅仅是那些程序员所专有的话题.而Oracle数据库更是凭借其性能卓越,操作方便灵活的特点,在数据库的市场中已经占据了一席之地.但是同样随着网络技术的不断进步,数据信息的不断增加,数据安全已经不再是以前的"老生长谈",也更不是以前书本上那些"可望不可及"的条条框框.    或许很久以前,大家都觉得Oracle数据库的安全并不存在隐患,因为Oracle公司在去年11月份开始促销其数据库软件时

Oracle数据库之中数据安全完全分析详解

随着计算机的普及以及网络的发展,数据库已经不再仅仅是那些程序员所专有的话题.而Oracle数据库更是凭借其性能卓越,操作方便灵活的特点,在数据库的市场中已经占据了一席之地.但是同样随着网络技术的不断进步,数据信息的不断增加,数据安全已经不再是以前的"老生长谈",也更不是以前书本上那些"可望不可及"的条条框框. 或许很久以前,大家都觉得Oracle数据库的安全并不存在隐患,因为 Oracle公司在去年11月份开始促销其数据库软件时提出的口号是"只有Oracl