一.提到ADO.NET,经常会和ASP.NET进行混淆,两者的区别很大,没有可比性,下面讲下两者之前的区别:
**ADO.NET是一组用于和数据源(数据库)进行交互的面向对象类库。**
1. ASP.NET是微软在.net framework提供的用于开发Web应用程序的类库(技术),封装在System.Web.dll中,对应程序中是system.web这个命名空间。 2. ADO.NET对Microsoft Sql Server和XML等数据源以及通过OLE DB和XML公开的数据源提供一致的访问,ado.net类在system.data.dll中,并且与System.XML.dll中XML类集成。 3. ado.net是数据库的一种访问方式,不能与asp.net相提并论,asp.net是基于.NetFramdwork 的网站开发技术。在数据库访问主要使用ADO.NET方式简单来讲ADO.NET是用来处理数据库的一种访问
方式。
下面介绍ADO.NET的五个常用对象:
- Connection类(连接对象)
》和数据库交互,必须连接它。连接帮助指明数据库服务器,数据库名字,用户名,密码和连接数据库所需要的其他参数,Connection对象会被Command对象使用,这样就能知道在哪个数据源上执行Sql命令(脚本)。
与数据库交互的过程意味着必须指明要执行的操作。这是依靠Command对象执行的。开发人员使用Command对象来发送SQL语句给数据库。
using (SqlConnection conn = new SqlConnection("data source=10.10.198.111;Database=systemconfig;uid=sa;password=sa"))
{
conn.Open();
}
SqlConnection参数中字符串是连接数据库地址、库名、用户名、密码等信息;通常是放web.config配置文件中,当需要调用时,直接引用配置信息,代码如下:
<!--数据库连接地址-->
<connectionStrings>
<add name="connstr" connectionString="data source=10.10.198.111;Database=systemconfig;uid=sa;password=sa"/>
</connectionStrings>
private static string connstr = ConfigurationManager.ConnectionStrings["connstr"].ConnectionString;
- Command对象
成功与数据库建立连接后,就可以使用Command对象来执行增删改查等命令,Command对象常用方法有:ExecuteReader()方法,ExecuteScalar()方法,ExecutNonQuery()方法
using (SqlConnection conn=new SqlConnection(connstr))
{
using (SqlCommand cmd = new SqlCommand(str, conn))
{
conn.Open();
int r=cmd.ExecuteNonQuery();
}
}
- DataAdapter类
某些开发人员使用的数据主要是只读的,并且开发人员很少需要将其改变至底层的数据源。同样一些情况要求在内存中缓存数据,以此来减少并不改变的数据被数据库调用的次数。DataAdepter对象是一种用来充当dataset对象与实际数据源之间桥梁的对象,只要由dataset对象就有dataadepter对象,它的工作步骤:一种时通过command对象执行sql语句,从数据源中检索数据,并将检索到的结果填充到dataset对象中。另一种时把用户对dataset对象作出的更改写入到数据源中。
using (SqlConnection cnn = new SqlConnection(connstr))
{
cnn.Open();
using (SqlCommand cmd = cnn.CreateCommand())
{
cmd.CommandText = sql;
cmd.Parameters.AddRange(parameters);
SqlDataAdapter apter = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
apter.Fill(ds);
return ds.Tables[0];
}
}
- DataSet类
Dataset对象是数据在内存中的表示形式。它包括多个DataTable对象,而DataTable包含行和列,就像一个普通的数据库中的表,DataSet是在特定的场景下使用――帮助管理内存中的数据并支持对数据的断开操作的。
- DataTbale类
DataTbale是一个临时保存数据的网格虚拟表(表示内存中数据的一个表)。DataTable是ADO DOT NET 库中的核心对象
扩展-DataGridView多行编辑删除代码如下:
//更新datatable
/// <summary>
/// 更新DataTable
/// </summary>
/// <param name="table">DataTable</param>
/// <returns></returns>
public static bool UpdatDataTables(DataTable table)
{
//sql语句是获取表结构
string sql = "SELECT * FROM " + table.TableName.ToString() + "";
SqlConnection con = new SqlConnection();
SqlCommand cmd = new SqlCommand();
using (SqlDataAdapter adapter = new SqlDataAdapter())
{
adapter.SelectCommand = cmd;//先添加命令对象,再添加连接对象
adapter.SelectCommand.CommandText = sql;
adapter.SelectCommand.CommandType = CommandType.Text;
adapter.SelectCommand.Connection = con;
adapter.SelectCommand.Connection.ConnectionString = Constr;
adapter.SelectCommand.Connection.Open();
SqlCommandBuilder cb = new SqlCommandBuilder(adapter);//适配器
int r = adapter.Update(table);
//int r = adapter.Update(table);
return r > 0;
}
}
//删除
/// <summary>
/// 删除数据
/// </summary>
/// <param name="strid">要删除的学生ID</param>
/// <returns></returns>
public static bool DeleteOneData(string strid)
{
#region 拼接删除
string sql = "DELETE students WHERE StuNo IN (" + strid + ")";
using (SqlConnection con = new SqlConnection(Constr))
{
con.Open();
using (SqlCommand cmd = new SqlCommand(sql, con))
{
int s = cmd.ExecuteNonQuery();
return s > 0;
}
}
#endregion
}
public static int DeleteXunhuan(string stuno)
{
string sql = "DELETE students WHERE StuNo='" + stuno + "'";
using (SqlConnection con = new SqlConnection(Constr))
{
con.Open();
using (SqlCommand cmd = new SqlCommand(sql, con))
{
int r = cmd.ExecuteNonQuery();
return r;
}
}
}
//点击修改
/// <summary>
/// 修改数据
/// </summary>
/// <param name="stuno">学号</param>
/// <param name="stuname">姓名</param>
/// <param name="stusex">性别</param>
/// <param name="stuage">年龄</param>
/// <param name="classno">班级编号</param>
/// <returns></returns>
public static bool UpdteEndWrite(string stuno, string stuname, string stusex, int stuage, string classno)
{
string sql = "UPDATE students SET StuName='" + stuname + "' ,Sex='" + stusex + "' ,Age=" + stuage + " ,ClassNo='" + classno + "' WHERE StuNo='" + stuno+ "'";
using (SqlConnection con = new SqlConnection(Constr))
{
con.Open();
using (SqlCommand cmd = new SqlCommand(sql, con))
{
int r = cmd.ExecuteNonQuery();
return r>0;
}
}
}