这篇文章比较适合初学者来看。
首先来讲一下C#中的ADO.NET到底是个什么?
在C#的ADO.NET是用来使C#程序和数据库交互的一项技术,就相当于一个往来于程序和数据库之间的运货车。由“程序”工厂出发到指定地址的“数据库”仓库去拉货回到“程序”工厂加工,或者把“程序”工厂加工好的数据拉到“数据库”仓库储存起来。下面我们就一起看看这个货物是怎么运输的:
(一)我们去工厂拉货首先需要一个车
首先我们需要找一辆车,这个很简单,我们创建SqlDataReader、DataTable、DataSet都可以当做这个车,但是不同的是这几个对象拿回的数据方式不太一样。
SqlDataReader:这个就相当于逐个货架往回拉货,获取到的数据是一行一行的数据。
DataTable:这个相当于按整个库房往回拉货,获取到的数据是一个数据表。
DataSet:这个就厉害了,这个可以拉N个库房的货,获取到的数据是N个(这个N是sql语句查询结果中表的个数)数据表。
这三个对象用起来都差不多,我一般情况下都是用DataTable,因为DataTable相比较来说用起来比较方便,但是约定俗成是按需要用合适的对象。
(二)现在我们需要一份拉货的地址
我们首先引用System.Data.SqlClient;这个命名空间,然后创建一个SqlConnection对象,就像这样:
1 class Program 2 { 3 static void Main(string[] args) 4 { 5 SqlConnection conn = new SqlConnection("server=.;database=Demo;uid=sa;pwd=123456"); 6 } 7 }
这里是通过调用了SqlConnection的有参构造函数创建了一个拉货地址单。括号中的参数是数据库连接字符串,这个如果不清楚怎么写,请自行百度。
(三)到达了仓库门口,现在我们需要打开仓库大门,打开仓库门需要调用conn.Open();方法,打开大门后我们需要一份需要拉取的货物清单
我们这时需要创建SqlCommand cmd = new SqlCommand("SELECT * FROM SysFunction", conn);
1 class Program 2 { 3 static void Main(string[] args) 4 { 5 SqlConnection conn = new SqlConnection("server=.;database=Demo;uid=sa;pwd=123456"); 6 conn.Open(); 7 SqlCommand cmd = new SqlCommand("SELECT * FROM SysFunction", conn); 8 9 } 10 }
这里我们依然通过SqlCommand的有参构造函数创建了货物清单。
第一个参数是sql语句,是用来告诉数据库仓库车应该拉什么货物、哪些货物。
第二个参数是SqlConnection对象,相当于告诉仓库车是受委托到这个地方的哪个仓库,拉取哪个库房的哪些个数据。
(四)现在我们就可以装车了,但现在有个问题,我们是用DataTable来获取数据,但是数据库给我们的是DataReader的数据,所以我们要申请数据库把DataReader整理成DataTable数据给我们。
我们这时需要创建SqlDataAdapter sda = new SqlDataAdapter(cmd);
1 class Program 2 { 3 static void Main(string[] args) 4 { 5 SqlConnection conn = new SqlConnection("server=.;database=Demo;uid=sa;pwd=123456"); 6 conn.Open(); 7 SqlCommand cmd = new SqlCommand("SELECT * FROM SysFunction", conn); 8 SqlDataAdapter sda = new SqlDataAdapter(cmd); 9 10 11 } 12 }
我们依然通过SqlDataAdapter的有参构造函数提出了我们的申请。括号中的参数是cmd对象。
(五)现在我们可以货物装车了
1 class Program 2 { 3 static void Main(string[] args) 4 { 5 SqlConnection conn = new SqlConnection("server=.;database=Demo;uid=sa;pwd=123456"); 6 conn.Open(); 7 SqlCommand cmd = new SqlCommand("SELECT * FROM SysFunction", conn); 8 SqlDataAdapter sda = new SqlDataAdapter(cmd); 9 10 DataTable dt = new DataTable(); 11 sda.Fill(dt); 12 13 14 } 15 }
(六)装车之后我们就可以关闭库房门,关闭数据库门了
1 class Program 2 { 3 static void Main(string[] args) 4 { 5 SqlConnection conn = new SqlConnection("server=.;database=Demo;uid=sa;pwd=123456"); 6 conn.Open(); 7 SqlCommand cmd = new SqlCommand("SELECT * FROM SysFunction", conn); 8 SqlDataAdapter sda = new SqlDataAdapter(cmd); 9 10 DataTable dt = new DataTable(); 11 sda.Fill(dt); 12 13 sda.Dispose(); 14 cmd.Dispose(); 15 16 conn.Close(); 17 } 18 }
sda.Dispose();cmd.Dispose();这个是关闭库房门,conn.Close();这个是关闭数据库门。
(七)现在我们的数据就已经拿到DataTable里了,这样ado.net的简单查询就完成了,下次我们讲怎么用车向“数据库”仓库中存数据。