编码实现>微软数据访问技术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,其作用代码已给出。

 

 

 

posted @ 2010-10-13 12:32  草珊瑚  阅读(669)  评论(0编辑  收藏  举报