为什么要学Ado.Net?
作为程序员,我们一般都可以在Sql Server 的查询分析器里面查看和操作数据库中的数据。但是普通的用户如果要查看和操作数据库中的数据,在查询分析器里面就不会了,我们不能让普通团用户去学Sql server吧。所以,我们搭建了一个界面(Web/Winform)让用户方便的操作数据库中的数据,而Ado.Net在其中就起到了重要的作用。
什么是Ado.Net?
Ado.Net就是一组类库,这组类库可以让我们通过程序的方式访数据库,就像System.IO下的类用类操作文件一样,System.Data这组类是用来操作数据库(不仅是Sql Server),它提供了统一的编程接口让操作其它数据库(Access、Oracle等)的方式和操作Sql Server一致。
四个常用类?
Connection(连接通道),用来连接数据库;
Command(命令对象),用来执行SQL语句(增删改,查询单个值);
DataReader(数据读取器), 只读,只进的结果集,一条一条读取数据;
DataAdapter(数据适配器),一个封装了上面3个对象的对象;
简单理解:应用程序在操作数据库中的数据的时候,我们首先需要建立一个通道,所有的数据读取和写入都通过这个通道来进行,Connection类解决了通道的问题。有了通道,我们就要选择操作了,是读取还是写入呢?这时候我们需要把我们的需求告诉给Command类。如果是增删改,那么Command会返回给你影响的行数。如果是读取,那看你要读取的内容了。读取一个值,Command就可以完成。读取多个值,就需要DataReader类了。以上的四个类都需要引用命名空间System.Data.SqlClient。如果需要把查询到的结果集本地化,就是把数据库查询之后的结果集从Sql服务器取出来存到本地内存中,则需要引用命名空间System.Data。下面我写了一个简单的登录,以供理解。如有问题,敬请斧正。
登录实例
private void btnLogin_Click(object sender, EventArgs e)
{
string username=txtUserName.Text.Trim();
string password=txtPassword.Text.Trim();
if (txtUserName.Text=="")
{
MessageBox.Show("请输入用户名!","温馨提示");
}
else if (txtPassword.Text=="")
{
MessageBox.Show("请输入密码!", "温馨提示");
}
else
{
//1. 准备好通往数据库的路,但是这条路还没有修好
SqlConnection conn = new SqlConnection("server=.;database=Test;uid=sa;pwd=jujianfei");
//2. 准备一个命令对象
SqlCommand cmd = new SqlCommand();
//2.1 告诉命令对象要做的事情,就是sql语句
cmd.CommandText =
"select UserName,Password from Login where UserName='" + username + "' And PassWord='" + password + "'";
//2.2 告诉命令对象,去数据库的路
cmd.Connection = conn;
//3. 开通道路,在命令对象执行命令之前才打开通道
conn.Open();
//4. 叫命令对象去干活,返回查询的结果集
SqlDataReader dr=cmd.ExecuteReader();
//dr的hasRows属性为true,则表示有一行或多行数据;为false,则表示没有查到数据
if (dr.HasRows)
{
MessageBox.Show("登录成功!", "温馨提示");
}
else
{
MessageBox.Show("登录失败!", "温馨提示");
}
//关闭数据库连接
conn.Close();
}
}