SQL_Server_2008完全学习之第十七章访问SQL Server 2008

1、ADO.Net 基础知识

ADO.NET

1)ADO.NET提供了对SQL Server等数据源以及通过OLEDB和XML公开的数据源的一致访问。数据共享使用者应用程序可以使用ADO.NET来连接到这些数据源,并检索、操作和更新数据。

2)ADO.NET有效地从数据操作中将数据访问分解为多个可以单独使用或一前一后使用的不连续组件。ADO.NET包含用于连接到数据、执行命令和检索结果和.NET Framework数据提供程序。可以直接处理检索到的结果,或将期放入ADO.NET DataSet对象,以便与来自多个源的数据或在层之间进行远程处理的数据组合在一起,以特殊方式向用户公开。ADO.NET DataSet 对象也可以独立于.Net Framework数据提供程序使用,以管理应用程序本地的数据或源自XML的数据。

2、SqlConnection

Connection属性和方法

1)ConnectionString:获取或设置用于打开SQL Server数据库的字符串

2)Database:获取当前数据库或者在连接打开后要使用的数据库的名称

3)State:获取连接的当前状态

4)Provider:包含Connection对象的数据提供者名称

5)ServerVersion:获取包含客户端要连接的Sql Server实例的版本的字符串

6)DataSource:获取要连接的SQL SERVER实例的名称

7)ConnectionTimeout:获取在尝试建立连接时终止尝试并生成错误之前所等待的时间

8)PacketSize:获取用来与Sql Server的实例通讯的网络数据包的大小(以字节为单位)

9)Open():打开一个数据库的连接

10)Close():关闭一个已经打开的连接

11)Execute():该方法可以执行SQL语句,并且返回一个RecordSet对象

3、SqlCommand

SqlCommand属性

1)CommandText:获取或者设置对数据源执行的T-SQL语句或存储过程

2)CommandTimeout:获取或设置在终止执行命令的尝试并生成错误之前的等待时间

3)CommandType:获取或设置一个值,该值指示如何解释 CommandText属性

4)Connection:获取或设置Command的此实例使用的Connection

5)Container(从Component继承):获取IContainer,包含Component

6)DesignTimeVisible:获取或设置一个值,该值指示命令对象是否应在Windows窗体设计器控件中可见

7)Parameters:获取ParameterCollection

8)Site(从 Component继承):获取或设置 Component的ISite

9)Transaction:获取或设置将在其中执行 Command的transaction

10)UpdateRowSource:获取或设置命令结果在由DbDataAdapter的Update方法使用时如何应用于DataRow

SqlCommand方法

1)ExecuteNonQuery:对连接执行T-SQL语句并返回受影响的行数

2)ExecuteReader:已重载。将 CommandText发送到Connection并生成一个DataReader

3)ExecuteScalar:执行查询,并返回查询所返回的结果集中第一行的第一列。勿略额外的列或者行

4)ExecuteXmlReader:将CommandText发送到Connection并生成一个XmlReader对象

5)GetType:获取当前实例的Type

4、SqlDataAdapter

SqlDataAdapter属性

1)SelectCommand:用于设置从记录集中选择记录的命令。当一个数据库正在进行Update时,该属性不可以设置。

2)InsertCommand:用于设置向记录集添加记录的命令。当一个数据库正在进行 Update时,该属性不可以设置。

3)UpdateCommand:用于设置向记录集更新记录的命令。当一个数据库正在进行Update时,该属性不可设置。

4)DeleteCommand:用于设置从记录集中删除记录的命令。当一个数据库正在进行Update时,该属性不可设置。

SqlDataAdapter方法

1)Fill:用于在DataSet中添加或刷新行,以便与ADO Recordset或Record对象中的行相匹配

2)FillSchema:用于将DataTable添加到 DataSet中,并匹配与数据源匹配的架构

3)GetFillParameter:用于获取当执行SQL的SELECT语句时由用户设置的参数。

4)Update:用于为DataSet记录集中每个已插入、已更道格拉斯中已删除的行调用相应的Insert、Update、或Select语句。

5)Dispose:该方法用于销毁SqlDataAdapter对象

5、SqlDataReader(略)

6、DataSet

DataSet是ADO.NET结构的主要维护,它是从数据源中检索到的数据在内存中的缓存。DataSet由一组DataTable组成,您可以使这些对象与DataRelation对象互相关联。您还可以通过使用 UniqueConstraint和 ForeignKeyConstraint对象在DataSet中实施数据完整性。

属性

1)DataSetName:当前DataSet名称

2)Namespace:DataSet的命名空间

3)Tables:当前DataSet中包含的表的集合

4)Relation:当前DataSet中表之间的关系的集合

5)DefaultViewManager:DataSet所包含的数据自定义视图,以允许使用自定义的DataViewManager进行筛选、搜索和导航

6)CaseSensitive: DataSet中的数据是否对大小写敏感

7)Locale:获取或设置用于比较表中字符串的区域设置信息

8)Prefix:获取或设置一个XML前缀,该前缀是DataSet的命名空间的别名。

方法

1)Copy:复制DataSet的结构和数据

2)Clone:复制DataSet的结构,但不复制数据

3)Clear:消除DataSet中的数据

4)ReadXML:把XML架构和数据读取到DataSet中

5)WriteXML:把 XML架构和数据写入到DataSet中

6)GetXML:返回存储在DataSet的数据的XML表示形式

7)GetType:获取当前实例的Type

8)Dispose:已重载。释放由MarshalByValueComponent使用的资源

9)Equals:已重载。确定两个Object实例是否相等

7、DataTable(略)

8、调用存储过程

private DataSet ExecuteProcedure(string ProcedureName,SqlParameter[] parameters)
        {
            try
            {
                conn.Open();
                var result = new DataSet();
                var sqlCommand = new SqlCommand();
                sqlCommand.Connection = conn;
                sqlCommand.CommandType = CommandType.StoredProcedure;
                sqlCommand.CommandText = ProcedureName;
                parameters.ToList().ForEach(m => {
                    sqlCommand.Parameters.Add(m);
                });
                SqlDataAdapter adapter = new SqlDataAdapter();
                adapter.SelectCommand = sqlCommand;
                adapter.Fill(result);

                return result;
            }
            catch (Exception e)
            {
                MessageBox.Show("Exception:" + e.Message);
            }
            finally
            {
                conn.Close();
            }

            return null;
        }

9、.Net事务处理

private int ExecuteTranscation(string[] sqls)
        {
            conn.Open();
            SqlTransaction trans = conn.BeginTransaction();
            SqlCommand cmd = new SqlCommand();            
            cmd.Connection = conn;            
            cmd.CommandType = CommandType.Text;
            cmd.Transaction = trans;

            try
            { 
                foreach(var sql in sqls)
                {
                    cmd.CommandText = sql;
                    cmd.ExecuteNonQuery();
                }
                trans.Commit();

                return 0;
            }
            catch (Exception e)
            {
                trans.Rollback();
                MessageBox.Show("Exception:" + e.Message);
                return -1;
            }
            finally
            {
                cmd.Dispose();
                conn.Close();
            }
        }

 

原文地址:https://www.cnblogs.com/cxmsky/p/3291202.html