日期:2014-05-16 浏览次数:20501 次
首先我们必须引入以下两个命名空间才能使用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个格的数据