日期:2014-05-16  浏览次数:20463 次

ADO.NET的基本用法

首先我们必须引入以下两个命名空间才能使用ADO.NET

using System.Data;
using System.Data.SqlClient;

 

对ADO.NET中几个类做简单介绍

1.SqlConnection:用于创建对数据库的连接

 SqlConnection conn = new SqlConnection(“连接字符串”);

conn.Open();//打开数据库连接

当我们不使用后必须调用conn.Close()关闭,否则浪费资源等

如果不想手动关闭连接,我们可以使用using(),如:

using(SqlConnection conn = new SqlConnection(“连接字符串”))

{

      conn.Open();

       ................//执行其他操作

}

当作用域离开花括号后会自动调用其Dispose() 方法,其内部实现为调用close()方法。注:使用using(),该类必须实现IDisposable接口

2.SqlCommand:用于操作数据库,如查询

SqlCommand cmd=new SqlCommand("查询语句",conn);

还可以为查询语句添加参数

SqlParameter参数类

比如一个更新语句,updata set name="tsoss" where id=@id;其中@id就是需要我们替换的参数,那么怎么替换呢?
SqlParameter pm = new SqlParameter("@id",SqlDbType.Int,4);//指明sql语句中的@id是我们的参数,其类型为int类型,参数大小为4字节
pm.Value = 2;给参数设置值

接着我们需要将参数对象pm添加到cmd对象中,方法为:cmd.Parameters.Add(pm);

接着我们就可以执行更新语句了:cmd.ExecuteNonQuery(),该方法会返回int类型数据,表明受影响行数。其他非查询语句和上述方法类似。

 

一些情况下,我们设置了数据表内的某字段为自增字段等,如id,那么我们有时需要在我们插入数据后,想要得到这个id值,我们可以使用以下方法:

插入数据:insert into UserDB output inserted.id values('tsoss','boy','adress');//插入后会返回插入行的id

我们调用cmd.ExecuteScalar()方法,该方法返回object对象,指向操作后返回结果的第一行第一列值。

 

3.SqlDataReader类

如过我们执行查询语句,怎么才能得到查询结果呢?

SqlDataReader dr = cmd.ExecuteReader();//执行查询,返回SqlDataReader对象,它指向查询返回的结果集

dr.Read();该方法为指向结果集的下一行。如果下一行存在返回true,否则返回false,没调用Read方法前,指向第一行的上面,执行一次后才指向第一行。

那么怎么得到当前指向行的数据呢?可使用索引,dr[0]得到当前行的第一个单元的数据,以此类推。

该方法好处是一行行的读,而不是把整个结果集搬到程序里面来,提高了效率。

 

4.SqlDataAdapter类

和SqlDataReader类不同,它是将整个查询结果搬回来,填充到DataSet或DataTable对象中去。

SqlDataAdapter da = new SqlDataAdapter(cmd);

DataTable dt=new DataTable();

da.Fill(dt);//把查询结果集填充到DataTable对象中,我们取数据可以在dt中取。

DataRow dr=dt.Rows[i];//得到表的第i+1行

dr[i]//该行的第i+1个格的数据