ADO.NET的五大基本对象:
1.Connection对象
2.Command对象
3.DataAdapter对象
4.DataSet对象
5.DataReader对象
ADO.NET对数据库的访问(以SQL Server为例)
首先定义一下 connectionstring为所需要的连接字符串
1.断开式数据库访问连接
断开式数据库连接:客户端从数据源获取数据,断开与数据源的连接,所有的操作都是针对本地缓存里的数据,当需要从数据源获取新数据或者是回传处理后数据,则需要重新连接数据源。
代码:
SqlConnnect sqlconnection = new SqlConnection(connectionstring);
SqlDataAdapter sqldataadapter new SqlDataAdapter("select * from tablename",sqlconnection);//不需要Open方法,加入sqlconnection.Open后,就不会自动断线了
DataSet dataset = new DataSet();
sqldataadapter.Fill(dataset,"tablename");
2.连接式数据库访问连接
连接式数据库访问连接就是客户端从数据源获取数据后,通过DataReader对象,一条一条从从数据源访问到的数据读取到客户端,这个过程要一只保持连线状态。
代码:
SqlConnection sqlconnection = new SqlConnection(connectionstring);
sqlconnection.Open();//打开数据库
SqlCommand cmd = sqlconnection.CreateCommand();
cmd.CommandText = "select * from tablename";
SqlDataReader dr = cmd.ExecuteReader();
while(dr.Read())
{
.......
}
sqlconnection.Close();//如果执行Close方法,则数据库会一直处于开启的状态
3.SqlConnection对象
SqlConnection构造函数
SqlConnection();
SqlConnnection(string);
实例化:
SqlConnection sql = new Sqlconnection();
Sql.ConnectionString=connectionstring;
sql.Open();
或者
SqlConnection sql = new Sqlconnection(connectionstring);
sql.Open();
在每次访问后记得用Close()关闭数据库连接
常用的方法:
Open 使用 ConnectionString 所指定的属性设置打开数据库连接
CreateCommand 创建并返回一个与 SqlConnection 关联的 SqlCommand 对象。
Close 关闭与数据库的连接。 此方法是关闭任何已打开连接的首选方法。
BeginTransaction 开始数据库事务。重载
查看msdn了解更详细 http://msdn.microsoft.com/zh-cn/library/system.data.sqlclient.sqlconnection(v=vs.110).aspx
4.SqlCommand对象
数据库建立好后要操作数据库就需要想数据库发送SQL指令那么此时就需要用SqlCommand对象。
构造函数:
SqlCommand() 初始化SqlCommand对象
SqlCommand(string) 用查询语句初始化Commad对象
SqlCommand(string , Connection) 初始化具有查询文本及其Connection对象
SqlCommand对象常用的属性:
CommandText 获取或设置查询文本
Connection 获取或设置Connection对象
CommandType 获取或设置命令类型
Transaction 获取或设置将在其中执行 SqlCommand 的 SqlTransaction。
SqlCommand对象常用方法:
方法 说明
ExecuteNonQuery 对连接执行 Transact-SQL 语句并返回受影响的行数,适合对一些不需要返回结果的SQL如,insert,updata,create table ....
ExecuteReader 将 CommandText 发送到 Connection 并生成一个 SqlDataReader。
ExecuteScalar 执行查询,并返回查询所返回的结果集中第一行的第一列。 忽略其他列或行。
5.数据库事务(SqlTransaction)
在一个销售系统中,当客户端销售部卖出了库存商品,就相应去数据库中更新已卖出去的商品后剩下的数量,避免出现错误,商品已经销售出去,但是数据库还没有及时的更新。
致使他人在读取数据库出现错误。
事务就是一系列操作,要么全部做完,要么全部不做,是不可分割的单元
事务处理
调用SqlConnection.BeginTransaction返回SqlTransaction对象,SqlTransaction对象对事务的处理为下面三个:
- Begin 在开始事务处理中的任何操作前,必须使用Begin命令来开始事务处理
- Commit 所有修改成功存储与数据库,才算是提交事务
- Rollback 事务回滚,当事务处理期间出现错误,取消之前事务已处理的所有修改,发生事务回滚
代码:
SqlConnection sql =new SqlConnection(connectionstring);
sql.Open();
SqlTransaction st = sql.BeginTransaction("SQL事务");//指派Transaction,并指定事务名称
SqlCommand cmd = sql.CreateCommand();
cmd.Transaction = st;//指派Transaction对象给SqlCommand
try//事务的开始
{
cmd.CommandText = textBox6.Text;
textBox1.Text += "执行事务受影响的行数:\r\n" + cmd.ExecuteNonQuery() + " \r\n";//返回受影响的行数
cmd.CommandText = textBox7.Text;
textBox1.Text += cmd.ExecuteNonQuery() + "\r\n";
cmd.CommandText = textBox8.Text;
textBox1.Text += cmd.ExecuteNonQuery() + "\r\n";
st.Commit();//提交事务,事务结束
}
catch (Exception ex)
{
MessageBox.Show("错误:"+ex.ToString(),"警告",MessageBoxButtons.OK,MessageBoxIcon.Asterisk);
st.Rollback("SQL事务");//事务回滚
}
st.Dispose();
sql.Close();
cmd.Dispose();