• 编码实现>微软数据访问技术ADO.NET(包括)>连接数据库


    编码实现>微软数据访问技术ADO.NET

    ADO.NET用于开发分布式应用系统,让应用程序离线处理数据,在数据库以完全断开的方式下。

    编码实现>微软数据访问技术ADO.NET>System.Data命名空间>连接类型

    用来连接数据库,直接查询和修改数据库数据。

    Connection:连接对象,建立与物理数据库的连接。

    Transaction:事务对象,与事务处理相关的类。

    DataAdapter:数据适配器对象,是连接类型与非连接类型之间的媒介,可当做此两者的桥梁。

    Command:数据命令对象,用来向数据库发送查询,更新,删除,修改操作的SQL语句。

    Parameter:参数对象,为Command对象中的SQL语句提供参数。

    DataReader:数据读取器对象,提供只读前向的游标,用于快速读取数据。

    编码实现>微软数据访问技术ADO.NET>System.Data命名空间>断开连接类型

    提供与数据库具有相似特性的数据缓冲,并且可以在该缓冲区进行增,删,改的数据操作,这些操作都只在内存中进行,需要通过连接部分的类与数据库交互。

    DataSet:可将DataSet看成存放在内存的一小型数据库。DataSet中包含数据表结合,数据表,数据列,数据行,试图,约束,关系。

    DataTable:类似数据库中的表,提供二维数据存储。

    DataColumn:类似于数据库中的字段列。

    DataRow,DataView,Constraint,DataRelation, DataTableCollection.

    编码实现>微软数据访问技术ADO.NET>比较DataSet和DataReader

    用DataSet:多个表之间导航;使用来自多个数据源的数据;需要在表中来回定位;需要与远程机器交换数据;缓存排序搜索筛选数据。

    用DataReader:只需显示数据,而不经常更改;数据不需缓存,每次刷新都要从数据库中获取新数据;结果集太大,占用太多内存。

    编码实现>微软数据访问技术ADO.NET>连接数据库

    SqlConnection类

    SqlConnection
    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Data;
    using System.Data.SqlClient;

    namespace SqlConnectionDemo1
    {
        
    class Program
        {
            
    static void Main(string[] args)
            {
                
    string ConnectionString="Data Source=ding;Initial Catalog=Northwind;User ID=sa";
                SqlConnection conn 
    = new SqlConnection(ConnectionString);
                
    try
                {
                    conn.Open();
                    
    if (conn.State == ConnectionState.Open)
                    {
                        Console.WriteLine(
    "连接己经打开");
                    }
    ;
                }
                
    catch (SqlException ex)
                {
                    Console.WriteLine(
    "出现连接错误:{0}", ex.Message);
                }
            }
        }
    }


    使用SqlConnectionStringBuilder构建连接字符串

    SqlConnectionStringBuilder
    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Data;
    using System.Data.SqlClient;

    namespace Demo1
    {
        
    class Program
        {
            
    static void Main(string[] args)
            {
                SqlConnectionStringBuilder connBuilder 
    = new SqlConnectionStringBuilder();
                
    //DataSource表示数据源位置,可以是IP地址,也可以指定一个DNS名称
                connBuilder.DataSource = ".";
                
    //InitialCataLog指定需要连接的数据库的名称。
                connBuilder.InitialCatalog = "Northwind";
                
    //IntergrateSecurity表示是否使用整合身份验证进行登录数据库
                connBuilder.IntegratedSecurity = false;
                
    //不使用整合windows身份验证时指定用户ID和密码
                connBuilder.UserID = "sa";
                connBuilder.Password 
    = "";
                
    //使用SqlConnectionStringBuilder.ToString()方法将会输出连接字符串
                using (SqlConnection conn = new SqlConnection(connBuilder.ToString()))
                {
                    
    try
                    {
                        conn.Open();
                        conn.Dispose();
                        conn.Open();
                        
    if (conn.State == ConnectionState.Open)
                        {
                            Console.WriteLine(
    "连接己经打开");
                            Console.WriteLine(
    "当前连接字符串为:" + conn.ConnectionString);
                        }
                    }
                    
    catch (Exception ex)
                    {
                        
    if (conn.State != ConnectionState.Open)
                        {
                            Console.WriteLine(
    "连接失败");
                            Console.WriteLine(
    "错误的信息是:{0}", ex.Message);
                        }
                    }
                }
                Console.ReadLine();
            }
        }
    }


    关闭和释放SQL Server连接

    关闭和释放SQL Server连接
    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Data;
    using System.Data.SqlClient;

    namespace Demo1
    {
        
    class Program
        {
            
    static void Main(string[] args)
            {
                SqlConnectionStringBuilder connBuilder 
    = new SqlConnectionStringBuilder();
                
    //DataSource表示数据源位置,可以是IP地址,也可以指定一个DNS名称
                connBuilder.DataSource = ".";
                
    //InitialCataLog指定需要连接的数据库的名称。
                connBuilder.InitialCatalog = "Northwind";
                
    //IntergrateSecurity表示是否使用整合身份验证进行登录数据库
                connBuilder.IntegratedSecurity = false;
                
    //不使用整合windows身份验证时指定用户ID和密码
                connBuilder.UserID = "sa";
                connBuilder.Password 
    = "";
                
    //使用SqlConnectionStringBuilder.ToString()方法将会输出连接字符串
                SqlConnection conn = new SqlConnection(connBuilder.ToString());    
                
    try
                    {
                        conn.Open();
                        conn.Dispose();
                        conn.Open();
                        
    if (conn.State == ConnectionState.Open)
                        {
                            Console.WriteLine(
    "连接己经打开");
                            Console.WriteLine(
    "当前连接字符串为:" + conn.ConnectionString);
                        }
                    }
                 
    catch (Exception ex)
                    {
                        
    if (conn.State != ConnectionState.Open)
                        {
                            Console.WriteLine(
    "连接失败");
                            Console.WriteLine(
    "错误的信息是:{0}", ex.Message);
                        }
                    }
                
    finally
                    {
                    
    //关闭一个连接,还可以通过conn.Open方法进行重新打开。
                        if (conn.State == ConnectionState.Open)
                        {
                            conn.Close();
                        }
                    
    //关闭并释放连接,不可以再次直接用conn.Open主法打开,必须再次重新初始化连接再进行打开。
                        if (conn.State == ConnectionState.Open)
                        {
                            conn.Dispose();
                        }
                    }          
                Console.ReadLine();
            }
        }
    }


    创建到SQL Server2005 Express的连接

    到SQL Server2005 Express的连接
    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Data;
    using System.Data.SqlClient;

    namespace ConnSqlExpress
    {
        
    class Program
        {
            
    static void Main(string[] args)
            {
                
    //注意示例这符串的使用
                const string ConnectionStr=@"Data Source=.\SQLExpress;AttachDbFilename=|DataDirectory|\Northwnd.mdf;Integrated Security=True;user Instance=True;";
                
    using (SqlConnection conn = new SqlConnection(ConnectionStr))
                {
                    
    try
                    {
                        conn.Open();
                        
    if (conn.State == ConnectionState.Open)
                        {
                            Console.WriteLine(
    "己经成功绑定到Sql Express!");
                        }
                    }
                    
    catch (Exception ex)
                    {
                        Console.WriteLine(
    "连接失败,错误信息为:{0}", ex.Message);
                    }
                }
                Console.ReadLine();
            }
        }
    }

    其中,user Instance是指临时绑定,还是永久绑定。如果永久绑定,再次调用字符串的连接对象的Open方法时,会抛出一个异常,提示已绑定此数据库文件。

    使用连接池

    连接池就像图书馆,图书馆内有7本书,被7个人借了,当第8人想借书,必须等人归还书籍。

    代码
    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Data;
    using System.Data.SqlClient;

    namespace SqlConnectionDemo1
    {
        
    class Program
        {
            
    static void Main(string[] args)
            {
                
    string ConnectionString="Data Source=ding;Initial Catalog=Northwind;User ID=sa";
                SqlConnection conn 
    = new SqlConnection(ConnectionString);
                
    try
                {
                    conn.Open();
                    
    if (conn.State == ConnectionState.Open)
                    {
                        Console.WriteLine(
    "连接己经打开");
                    }
                    
    //清除指定连接的连接池
                    SqlConnection.ClearPool(conn);
                   
    // 清除所有连接池
                    SqlConnection.ClearAllPools();
                }
                
    catch (SqlException ex)
                {
                    Console.WriteLine(
    "出现连接错误:{0}", ex.Message);
                }
            }
        }
    }

    如果想强制关闭连接池,在连接字符串中添加"pool=false",如

    "Data Source=ding;Initial Catalog=Northwind;User ID=sa;pooling=false"

    SqlConnection提供了两个静态方法:ClearPool和ClearAllPool,其作用代码已给出。


    合乎自然而生生不息。。。
  • 相关阅读:
    面向对象设计原则之二:开放封闭原则
    面向对象设计原则之一:单一职责原则
    设计模式之四:适配器模式(Adapter Pattern)
    面向对象设计原则之六:合成/聚合复用原则
    设计模式之三:迭代器模式(IteratorPattern)
    面向对象设计原则之五:迪米特法则
    设计模式之二:观察者模式(Observer Pattern)
    五分钟搭建 Flash 视频直播站
    Flash Media Server 3 开发版供下载
    不掉线的路由器路由特殊技术分析
  • 原文地址:https://www.cnblogs.com/samwu/p/1849973.html
Copyright © 2020-2023  润新知