`
zheyiw
  • 浏览: 1017178 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

ADO.net

    博客分类:
  • C#
阅读更多
一、简单介绍ADO.NET

System.Data:DataTable,DataSet,DataRow,DataColumn,DataRelation,Constraint

System.Data.Common(各种数据访问类的基类和接口):DataColumnMapping,DataTableMapping

System.Data.SqlClient(对Sql Server进行操作的数据访问类):

	1)SqlConnection:数据库连接器

	2)SqlCommand:数据库命名对象

	3)SqlCommandBuilder:生存SQL命令

	4)SqlDataReader:数据读取器

	5)SqlDataAdapter:数据适配器,填充DataSet

	6)SqlParameter:为存储过程定义参数

	7)SqlTransaction:数据库事务

二、SqlConnection(连接对象) 

1、连接字符串

基本语法:数据源(Data Source)+数据库名称(Initial Catalog)+用户名(User ID)+密码(Password)。

说明:
(1)必须指定Sql Server支持的两种身份验证方法(即Windows身份验证和Sql Server身份验证)中的一种。要想使用Windows身份验证,必须在连接字符串中包括 Integrated Security 属性:Data Source=ServerName;Integrated Security=True;默认情况下,Integrated Security属性为False。

(2)连接字符串中可用的选项:

Application Name(应用程序名称):应用程序的名称。如果没有被指定的话,它的值为.NET SqlClient Data Provider(数据提供程序)。

AttachDBFileName/extended properties(扩展属性)/Initial File Name(初始文件名): 可连接数据库的主要文件的名称,包括完整路径名称。数据库名称必须用关键字数据库指定。

Connect Timeout(连接超时)/Connection Timeout(连接超时):一个到服务器的连接在终止之前等待的时间长度(以秒计),缺省值为15。

Connection Lifetime(连接生存时间): 当一个连接被返回到连接池时,它的创建时间会与当前时间进行对比。如果这个时间跨度超过了连接的有效期的话,连接就被取消。其缺省值为0。

Connection Reset(连接重置): 表示一个连接在从连接池中被移除时是否被重置。缺少值为真。

Current Language(当前语言): SQL Server语言记录的名称。

Data Source(数据源)/Server(服务器)/Address(地址)/Addr(地址)/Network Address(网络地址):SQL Server实例的名称或网络地址。

Encrypt(加密):当值为真时,如果服务器安装了授权证书,SQL Server就会对所有在客户和服务器之间传输的数据使用SSL加密。被接受的值有true(真)、false(伪)、yes(是)和no(否)。

Enlist(登记):表示连接池程序是否会自动登记创建线程的当前事务语境中的连接,其缺省值为真。

Database(数据库)/Initial Catalog(初始编目):数据库的名称。

Integrated Security(集成安全)/Trusted Connection(受信连接):表示Windows认证是否被用来连接数据库。它可以被设置成真、伪或者是和真对等的sspi,其缺省值为伪。

Max Pool Size(连接池的最大容量): 连接池允许的连接数的最大值,其缺省值为100。

Min Pool Size(连接池的最小容量): 连接池允许的连接数的最小值,其缺省值为0。

Network Library(网络库)/Net(网络):用来建立到一个SQL Server实例的连接的网络库。支持的值包括: dbnmpntw (Named Pipes)、dbmsrpcn (Multiprotocol/RPC)、dbmsvinn(Banyan Vines)、dbmsspxn (IPX/SPX)和dbmssocn (TCP/IP)。协议的动态链接库必须被安装到适当的连接,其缺省值为TCP/IP。

Packet Size(数据包大小):用来和数据库通信的网络数据包的大小。其缺省值为8192。

Password(密码)/Pwd:与帐户名相对应的密码。

Persist Security Info(保持安全信息):用来确定一旦连接建立了以后安全信息是否可用。如果值为真的话,说明像用户名和密码这样对安全性比较敏感的数据可用,而如果值为伪则不可用。重置连接字符串将重新配置包括密码在内的所有连接字符串的值。其缺省值为伪。

Pooling(池):确定是否使用连接池。如果值为真的话,连接就要从适当的连接池中获得,或者,如果需要的话,连接将被创建,然后被加入合适的连接池中。其缺省值为真。

User ID(用户ID):用来登陆数据库的帐户名。

Workstation ID(工作站ID):连接到SQL Server的工作站的名称。其缺省值为本地计算机的名称。

(3)例举典型连接字符串

1>SQL Server连接字符串

标准安全连接: 

Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword;或者

Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;Trusted_Connection=False;

可信连接:

Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI;或者

Server=myServerAddress;Database=myDatabase;Trusted_Connection=True; 

2> Access连接字符串

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\myDatabase.mdb;User Id=admin;Password=;

3>MySQL连接字符串

Server=myServerAddress;Database=myDatabase;Uid=myUsername;Pwd=myPassword;

4>DB2连接字符串

Server=myAddress:myPortNumber;Database=myDatabase;UID=myUsername;PWD=myPassword;

5>Oracle连接字符串

Data Source=TORCL;User Id=myUsername;Password=myPassword; 

2、创建连接对象

SqlConnectionStringBuilder connectionStringBuilder = new SqlConnectionStringBuilder()
{
    DataSource = "",
    InitialCatalog = "",
    UserID = "",
    Password = ""
};
SqlConnection connection = new SqlConnection(connectionStringBuilder.ToString()); 

3、打开和关闭连接对象

using(SqlConnection connection = new SqlConnection(connectionStringBuilder.ToString()))
{
     connection.Open();
     connection.Close();
} 
4、连接池

(1)建立一个数据库连接是非常消耗时间和消耗资源的事情。ADO.NET提供了名为连接池的优化方法。连接池就是一个容器,它存放了一定数量的与数据库服务器的物理连接。因此,当我们需要连接数据库服务器的时候,只需去池(容器)中取出一条空闲的连接,而不是新建一条连接。这样的话,我们就可以大大减少连接数据库的开销,从而提高了应用程序的性能。

(2)连接池具有类别区分,同一个时刻同一应用程序域可以有多个不同类型的连接池。细致的讲,连接池是由进程、应用程序域、连接字符串以及windows标识(在使用集成的安全性时)共同组成签名来标识区分的。但对于同一应用程序域来说,一般只由连接字符串来标识区分。当打开一条连接时,如果该条连接的类型签名与现有的连接池类型不匹配,则创建一个新的连接池。反之,则不创建新的连接池。

例如:

//创建连接对象1
using (SqlConnection conn1 = new SqlConnection("DataSource=(local);Integrated Security=SSPI;Initial Catalog=Northwind"))    
{        
    conn1.Open();       
}


//创建连接对象2
using (SqlConnection conn2 = new SqlConnection("DataSource=(local);Integrated Security=SSPI;Initial Catalog=pubs"))   
{       
    conn2.Open();      
}


//创建连接对象3
using (SqlConnection conn3 = new SqlConnection("DataSource=(local);Integrated Security=SSPI;Initial Catalog=Northwind"))  
{        
    conn3.Open();      
} 

创建了三个SqlConnection对象,但是管理时只需要两个连接池。因为conn1与conn2的连接字符串相同,所有可以共享一个连接池。conn2与conn1,conn3不同,所以需要创建新的连接池。
(3)连接池行为可以通过连接字符串控制:

Connection Timeout:连接请求等待超时时间。默认为15秒。

Max Pool Size:连接池中最大连接数。默认为100。

Min Pool Size:连接池中最小连接数。默认为0。

Pooling:是否启用连接池。ADO.NET默认是启动的。

(4)使用T-SQL语句监视连接状态:exec sp_who

(5)高效使用连接池的基本原则:

     ● 在最晚的时刻申请连接,在最早的时刻释放连接。

     ● 关闭连接时先关闭相关用户定义的事务。

     ● 确保并维持连接池中至少有一个打开的连接。

     ● 尽力避免池碎片的产生。主要包括集成安全性产生的池碎片以及使用许多数据库产生的池碎片。
三、SqlCommand(命令对象)

1、实例化的时候默认初始化的四个属性:

CommandText:空字符串("") 

CommandTimeout:30

CommandType:CommandType.Text

Connection:Null

2、创建命令对象:

SqlCommand command = connection.CreateCommand(); //这种方式比较好
SqlCommand command=new SqlCommand(); 

3、几个重要的属性:

(1)CommandText:获取或设置要对数据源执行的 Transact-SQL 语句、表名或存储过程!

(2)CommandType:设置你执行的SQL语句是存储过程还是T-SQL(是一个枚举)!

	● Text:SQL文本命令(默认)

	● StoredProcedure:存储过程名称
 	● TableDirect:表的名称

(3)Parameters:设置你T-SQL中你需要用到的参数。

4、几个重要的方法:

(1)ExecuteNonQuery:返回是影响的行数(int),主要执行更新,添加,删除等操作!

(2)ExecuteReader:执行SQL或存储过程,返回的是SqlDataReader类型,主要用来查询!

	注意这个方法的重载CommandBehavior枚举,成员如下:

	● Default:此查询可能返回多个结果集。执行查询可能会影响数据库状态。当不设置CommandBehavior标志时默认为Default。

	● SingleResult:查询返回个结果集。

	● SchemaOnly:查询仅返回列信息。当使用SchemaOnly时,用于SQL Server的.NET Framework数据提供程序将在要执行的语句前加上SET FMTONLY ON。

	● KeyInfo:此查询返回列和主键信息。

	● SingleRow: 查询应返回一行。

	● SequentialAccess:提供一种方法,以便DataReader处理包含带有大量二进制值的列的行。SequentialAccess不是加载整行,而是使DataReader将数据作为流来加载。然后可以使用GetBytes或GetChars方法来指定开始读取操作的字节位置以及正在返回的数据的有限的缓冲区大小。

	● CloseConnection:在执行该命令时,如果关闭关联的DataReader对象,则关联的Connection对象也将关闭。

(3)ExecuteScalar:返回执行结果集中的第一行第一列,如果没有数据,则返回NULL!

可能返回NULL值,需要对结果进行判断,如下:

object my = cmd.ExecuteScalar();
if (object.Equals(my,null))  //可以使用Equals进行Null值的判断,易读性强
  Console.WriteLine("Not Data");
else
  Console.WriteLine("Yes"); 
(4)CreateParameter:创建SqlParameter实例。 

5、异步执行命令:执行Command对象命令时,需要等待命令完成才能执行其他操作。比如,执行ExcuteNonQuery()方法,应用程序将会保持阻塞,直到数据操作成功完成或者异常终止以及连接超时。异步执行的根本思想是,在执行命令操作时,无需等待命令操作完成,可以并发的处理其他操作。ADO.NET提供了丰富的方法来处理异步操作,BeginExecuteNonQuery和EndExcuteNonQuery就是一对典型的为异步操作服务的方法。BeginExecuteNonQuery方法返回System.IAsyncResult接口对象。我们可以根据IAsyncResult的IsCompleted属性来轮询(检测)命令是否执行完成。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;//必须引入
using System.Data.SqlClient;//必须引入
namespace Command
{
    class Program
    {
        static void Main(string[] args)
        {
            SqlConnectionStringBuilder connStr = new SqlConnectionStringBuilder();
            connStr.DataSource = @".\SQLEXPRESS";
            connStr.IntegratedSecurity = true;
            connStr.InitialCatalog = "db_MyDemo";
            connStr.AsynchronousProcessing = true;//必须显示说明异步操作
            StringBuilder strSQL = new StringBuilder();
            //插入100个测试客户
            for (int i = 1; i <= 500; ++i)
            {
                strSQL.Append("insert into tb_SelCustomer ");
                strSQL.Append("values('");
                string name = "测试客户" + i.ToString();
                strSQL.Append(name);
                strSQL.Append("','0','0','13822223333','liuhaorain@163.com','广东省深圳市宝安区',12.234556,34.222234,'422900','备注信息'); ");
            }
            using (SqlConnection conn = new SqlConnection(connStr.ConnectionString))
            {
                conn.Open();
                SqlCommand cmd = new SqlCommand(strSQL.ToString(), conn);
                IAsyncResult pending = cmd.BeginExecuteNonQuery();//开始执行异步操作
                double time = 0;
                //检查异步处理状态
                while (pending.IsCompleted == false)
                {
                    System.Threading.Thread.Sleep(1);
                    time++;
                    Console.WriteLine("{0}s", time * 0.001);
                }
                if (pending.IsCompleted == true)
                {
                    Console.WriteLine("Data is inserted completely...\nTotal coast {0}s", time * 0.001);
                }
                cmd.EndExecuteNonQuery(pending);//结束异步操作
            }
            Console.Read();
        }
    }
} 

6、如何获取插入行的ID

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;
namespace Command2
{
    class Program
    {
        static void Main(string[] args)
        {
            //构造连接字符串
            SqlConnectionStringBuilder connStr = new SqlConnectionStringBuilder();
            connStr.DataSource = @".\SQLEXPRESS";
            connStr.IntegratedSecurity = true;
            connStr.InitialCatalog = "db_MyDemo";
            //拼接SQL语句
            StringBuilder strSQL = new StringBuilder();
            strSQL.Append("insert tb_SelCustomer(Name) ");
            strSQL.Append("OUTPUT inserted.ID values(@Name)");
            using (SqlConnection conn = new SqlConnection(connStr.ConnectionString))
            {
                SqlCommand cmd = new SqlCommand(strSQL.ToString(), conn);
                SqlParameter para = new SqlParameter("@Name", SqlDbType.VarChar, 20);
                para.Value = "Kemi";
                cmd.Parameters.Add(para);
                try
                {
                    conn.Open();
                    int insertedID = (int)cmd.ExecuteScalar();//获取单个值
                    Console.WriteLine("Inserted ID:{0}", insertedID);
                }
                catch (Exception ex)
                {
                    Console.WriteLine("{0}", ex.Message);
                }
            }
            Console.Read();
        }
    }
} 

四、SqlParameter(Sql参数) 

1、几个重要的属性

	ParameterName:设置参数名

	Value:给参数设置值

	Size:设置参数字节最大大小

	SqlDbType:参数在SQL中的类型

2、命令对象添加参数集合的几种方法

(1)AddWithValue

(2)Add

(3)AddRange

using (SqlConnection connection = new SqlConnection(""))
  {
      SqlCommand command = connection.CreateCommand();
      command.CommandText = "";
 
      //可以使用这种方式添加多个参数,不过方式不够好
      command.Parameters.Add("@name", SqlDbType.NVarChar).Value = "yang"; //第一种方式
      command.Parameters.Add("@age", SqlDbType.Int).Value = 888;
      command.Parameters.Add("@address", SqlDbType.NVarChar, 100).Value = "Jiang Su";
 
      //这种方式直接给定参数名和参数就可以了,可操作性比较差
      command.Parameters.AddWithValue("@name", "yang");
      command.Parameters.AddWithValue("@age", 888).SqlDbType = SqlDbType.Int;
      command.Parameters.AddWithValue("@address", "Jiang su").SqlDbType = SqlDbType.NVarChar;
 
      //直接使用参数集合添加你需要的参数,推荐这种写法
      SqlParameter[] parameters = new SqlParameter[]
      {
          new SqlParameter("@name",SqlDbType.NVarChar,100){Value = "yang"},
          new SqlParameter("@age",SqlDbType.Int,2){Value = 888},
          new SqlParameter("@address",SqlDbType.NVarChar,20){Value = "Jiang Su"}, 
      };
      command.Parameters.AddRange(parameters);  //参数也可以是一个Array数组,如果采用数组参数代码的可读性和扩展性就不是那么好了
 
      //当我们把参数都添加好之后,会生成一个“SqlParameterCollection”集合类型,相当于参数的集合
      //那么我们就可以对这些参数进行修改和移除了
      //说穿了“SqlParameterCollection”内部其实是一个List<SqlParameter>的集合,只是它里面的复杂度比较高,考虑的很全面
      command.Parameters[0].Value = "hot girl";
      command.Parameters[0].Size = 200;
  } 

五、SqlDataReader(数据流读取器)

1、基本用法 

using (SqlConnection conn = new SqlConnection(""))
{
    conn.Open();
    SqlCommand command = conn.CreateCommand();
    command.CommandText = "";
    using (SqlDataReader dr = command.ExecuteReader(CommandBehavior.CloseConnection))
    {
        while (dr.Read())
        {
            //开始读取数据了,接下来你想怎么样就怎么样了
            string str = dr.GetSqlString(0).ToString();
        }
    }
} 

2、常用方法

(1)GetOrdinal:获取指定列名的列序号(索引号),使用这个方法可以把经常变动的列进行固定

	int name=dr.GetOrdinal("name"); //通过列名来获取当前列的索引号

(2)GetName:  获取列名,参数为指定列名的序列号,返回string

	string columnName=dr.GetName(name);//通过列名所处的索引号来获取列名名称 

(3)IsDBNull:判断当前读取的数据是否为Null,返回类型为Bool

	dr.IsDBNull(coContractID)?"NULL":dr.GetInt32(coContractID).ToString();

(4)NextResult:当查询为批处理查询时,使用这个方法去读取下一个结果集,返回值为Bool,如果存在多个结果集,则为 true;否则为 false。

(5)Read:读取数据

3、常用属性

(1)HasRow:判断是否包含一行或多行,也就是判断有没有数据,返回类型为Bool。

(2)FieldCount:获取读取的列数,返回类型为Int。

(3)IsClosed:判断读取的数据流是否关闭。

4、性能剖析

读取数据的时候会有很多种写法,如dr[0].ToString(),dr["Name"].ToString(),dr.GetString(0),dr.GetSqlString(0)等等的读取方式的写法。

读取数据性能总结:

SqlDataReader读取方法

(1)DataReader 索引+基于[序列号]->dr[0].ToString()	|Index-based access

(2)DataReader 索引+基于[列名]->dr["Name"].ToString()	|性能最差

(3)GetString 开头的+基于[序列号]->dr.GetString(0) |type-access

(4)GetSql 开头的+基于[序列号]->dr.GetSqlString(0)	|Provider-specific typed accessor 

(5)GetOrdinal()	通过列名获取这个列的序列号 |这个方法在提高性能上面有作用

性能(4)-->(3)-->(1)-->(2) 

5、补充 

SqlDataReader是连接相关的,SqlDataReader中的查询结果并不是放在程序中,而是放在数据库服务器中,SqlDataReader只是相当于一个指针(游标),只能读取当前游标指向的行,连接断开就不能再读取。这样无论查询结果有多少条,对程序占用的内存都几乎没有影响。但SqlDataReader对于小数据量的数据来说带来的只有麻烦。 

六、SqlTransaction(事务)

1、事务中的命名存储点

一旦你定义了命名存储点,只能回滚命名存储点之后的操作,这是要看情况而使用!

using (SqlConnection conn = new SqlConnection(str))
{
    conn.Open();
    SqlTransaction transaction = conn.BeginTransaction();
    SqlCommand cmd = conn.CreateCommand();
    cmd.CommandText = "";
    cmd.Transaction = transaction;
    //使用命名存储点
    transaction.Save("this is point");  //定义命名存储点,使用Save方法先保存存储点,定义回滚数据的开始位置                 
    //这边是你要回滚的操作代码,TO DO... 
    //把从命名存储点到这里的操作进行回滚
    transaction.Rollback("this is point");  //回滚命名存储点              
} 

2、SQL语句中的事务

BEGIN TRANSACTION
     --你需要执行的更新,删除,插入的语句
IF(@@ERROR > 0) //这是系统变量,存储你在执行更新,删除,插入操作时发生错误的记录编号
     ROLLBACK
ELSE
   COMMIT 

3、TransactionScope

using (TransactionScope transactionScope = new TransactionScope())
{
    try
    {
        using (SqlConnection connection = new SqlConnection())
        {
            // TO DO
            //提交事务,如果有异常,他会自动回滚的
            transactionScope.Complete();
        }
    }
    catch (Exception)
    {
        //捕获异常
        throw;
    }
} 

七、SqlDataAdapter(数据适配器)

1、构造函数

四个重载:

	(1)无参

	(2)SqlDataAdapter(SqlCommand)	执行命令对象实例

	(3)SqlDataAdapter(String,SqlConnection)	只能指定查询语句,连接对象实例

	(4)SqlDataAdapter(String,ConnectionString)

2、填充数据(Fill) 

DataSet dataSet = new DataSet();
using (SqlConnection conn = new SqlConnection(""))
{
    conn.Open();
    SqlCommand command = conn.CreateCommand();
    command.CommandText = "select name,age,address from MyInformation";
    SqlDataAdapter dataAdapter = new SqlDataAdapter(command);
    dataAdapter.Fill(dataSet);  //填充数据
}
 

3、使用“SqlCommandBuilder”对数据进行增删改查
(1)添加数据

using (SqlConnection conn = new SqlConnection(ConnectionString()))
{
    conn.Open();
    //构建查询语句,也可以指定SqlCommand,其中变换的方法有很多
    SqlDataAdapter da = new SqlDataAdapter("select LastName,FirstName from dbo.Employees", conn);
    DataSet ds = new DataSet();
    da.Fill(ds);
    //这句话很重要,它会把你在DataSet增加的数据转化为SQL语句用来更新数据库
    SqlCommandBuilder cmdBuilder = new SqlCommandBuilder(da);
    //添加行,实例化一个行对象,注意是用NewRow来创建行
    DataRow row = ds.Tables[0].NewRow();
    row[0] = "Yang";
    row[1] = "鬼头";
    ds.Tables[0].Rows.Add(row);  //添加到表中
    da.Update(ds);             //把DataSet中表和数据库进行对比,更新
} 

(2)修改数据

using (SqlConnection conn = new SqlConnection(""))
{
    SqlDataAdapter da = new SqlDataAdapter("SQL语句或你自己定义的命令对象", conn);
    DataSet ds = new DataSet();
    da.Fill(ds);
    SqlCommandBuilder cmdBuilder = new SqlCommandBuilder(da);
    ds.Tables[0].Rows[12][1] = ""; //修改数据
    da.Update(ds);
    //调用Update方法其中隐式的调用了AcceptChanges方法,更新数据集中的数据
    //如果你继续使用这个数据集而没有调用这个方法,在后面的使用会出现异常
    ds.AcceptChanges();  //这句话可以不写的
} 

(3)删除数据

using (SqlConnection conn = new SqlConnection(""))
{
    SqlDataAdapter da = new SqlDataAdapter("SQL语句或你自己定义的命令对象", conn);
    DataSet ds = new DataSet();
    da.Fill(ds);
    SqlCommandBuilder cmdBuilder = new SqlCommandBuilder(da);
    //删除数据
    ds.Tables[0].Rows[12].Delete();
    da.Update(ds);  //这边会隐式调用DataTable的AcceptChanges方法
}
4、关于“SqlDataAdapter”中Fill方法

ds.Fill(ds,5,10,"MyTable"); 

八、DataSet、DataTable、DataRow、DataColumn

表示数据存放在缓存中,DataSet里面可以包含多个DataTable,DataTable中有多个DataColumn和多个DataRow,包括对各种对DataTable的操作,以及对列和行的操作,在进行DataSet,DataTable进行操作的时候,应该先判断它们是否为Null。
分享到:
评论

相关推荐

    ADO.NET sql、LINQ to sql、ADO.NET Entity Framework(EF)数据库连接性能比较

    本文将深入探讨三种常见的.NET框架下的数据库访问技术:ADO.NET SQL、LINQ to SQL以及ADO.NET Entity Framework(EF),并重点分析它们在数据库连接性能上的差异,特别是在插入和读取操作,包括模糊检索方面的表现。...

    学生管理系统+ADO.NET+SQL2005

    《基于ADO.NET与SQL2005的学生管理系统详解》 在信息技术日新月异的今天,学生管理系统已经成为教育机构日常管理的重要工具。本系统利用ADO.NET技术和SQL Server 2005数据库,实现了对学生的全面信息化管理,为教育...

    ADO.NET 4从入门到精通源代码

    ADO.NET 4是微软.NET Framework 4的一部分,它提供了一组用于访问数据库的类和接口。这个技术允许开发者高效地创建、操作和管理数据存储,无论是关系型数据库还是其他类型的数据源。本压缩包文件“ADO.NET 4从入门到...

    ADO.NET 4从入门到精通

    《ADO.NET 4从入门到精通》主要内容简介:ADO.NET是windows开发平台上的核心数据技术之一。《ADO.NET 4从入门到精通》是microsoft ADO.NET 4的入门教程,旨在帮助visual basic和c#开发人员了解ADO.NET及相关技术的...

    ADO.NET核心技术(我看过最好的ADO。NET书)

    ### ADO.NET核心技术详解 #### 一、ADO.NET概述 ADO.NET是一组包含在.NET框架中的库,专门用于在.NET应用程序的各种数据存储之间进行通信。它不仅能够作为一个强大的、层次化的数据缓存来使用,还支持离线处理数据...

    ADO.NET官方参考文档2021-09.pdf

    ADO.NET 是 .NET Framework 中用于访问关系数据库的关键组件,它提供了与各种数据源(如 SQL Server、Oracle 等)交互的灵活性。在2021-09版的官方参考文档中,主要关注了DataSet、DataTable、DataView这三个核心类...

    ADO.NET 全面解析ADO.NET

    ADO.NET是Microsoft开发的一种用于访问关系数据库的数据访问技术,它为.NET Framework应用程序提供了一套全面的数据访问组件。本文将深入探讨ADO.NET的核心概念、对象模型和数据操作。 首先,我们来看ADO.NET的设计...

    自做的ADO.NET项目 借阅图书

    《自做的ADO.NET项目——借阅图书》 在信息技术领域,数据库管理是不可或缺的一部分,而ADO.NET作为.NET框架中用于数据库交互的重要组件,为开发者提供了高效、强大的数据访问能力。本项目“借阅图书”正是基于ADO...

    《ADO.NET专业项目实例开发》源代码

    ADO.NET是微软.NET框架的一部分,主要用于访问和操作数据库。它为开发者提供了强大的数据访问接口,使得程序员能够高效地处理各种数据库任务,如查询、更新、插入数据等。本资源是《ADO.NET专业项目实例开发》一书的...

    ADO.NET教程(适合新手)

    ADO.NET是微软.NET框架下的一种数据访问技术,用于与数据库进行交互。它是.NET应用程序与数据库之间通信的基础,提供了高效、灵活的数据处理能力。本教程专为初学者设计,旨在帮助新接触ADO.NET的开发者理解其核心...

    ado.net面试题

    ADO.NET 是微软为.NET Framework 设计的一种全新的数据库访问技术,它是对传统ADO(ActiveX Data Objects)的升级,旨在提供更高效、更易用的数据访问接口。ADO.NET 的设计核心是面向数据集而非数据库,这使得它更适合...

    ADO.NET本质论.rar

    ADO.NET是微软开发的一种用于访问数据的框架,它在.NET Framework中扮演着核心角色,为开发者提供了高效、灵活的数据访问接口。"ADO.NET本质论"这本书深入探讨了ADO.NET的内在原理和实际应用,旨在帮助读者理解并...

    ADO.Net助手V1.00---一个获取ADO.Net连接字符串,测试SQL命令的辅助软件

    ADO.Net助手是一个获取ADO.Net连接字符串(支持Access,SQLite,SQLServer,MySQL和ORACLE),测试SQL命令,存储过程和数据库之间互导数据的辅助软件。ADO.Net助手还可以用来以插入SQL语句形式导出导入记录,目前提供了...

    轻轻松松掌握ADO.NET事务处理方法技巧

    轻轻松松掌握 ADO.NET 事务处理方法技巧 ADO.NET 事务处理方法是指在编程中使用的一种机制,用于保证数据一致性和完整性。事务是一组不可分的 SQL 语句,在编程中也是很难解决的一个问题。ADO.NET 事务处理方法提供...

    ADO.net大数据量操作数据库实验

    本实验“ADO.NET大数据量操作数据库实验”聚焦于如何高效地在SQL Server中存储和处理大量数据。实验环境基于Visual Studio 2015(VS2015)和SQL Server 2008,采用多种方法来演示批量数据插入,包括常规方法、Bulk ...

    ADO.net操作数据库总结

    ADO.net 操作数据库总结 ADO.net 是 một 微软公司开发的数据库访问技术,用于与关系数据库管理系统(RDBMS)交互。以下是 ADO.net 操作数据库的总结,包括使用 SqlConnection 和 SqlCommand 对象连接数据库、执行...

    【传智播客.Net培训—ADO.Net】5练习登录

    【标题】:“【传智播客.Net培训—ADO.Net】5练习登录”指的是一个关于ADO.NET技术在实际登录功能中的应用教程。这个练习可能是针对初学者或者已经有一定基础的.Net开发者设计的,旨在通过实际操作加深对ADO.NET的...

    ADO.NET数据库访问技术案例教程

    ADO.NET是微软.NET框架下的一种数据访问技术,用于与各种关系型数据库进行交互。它提供了一组组件和服务,使得开发者可以高效、灵活地存取和处理数据。在本"ADO.NET数据库访问技术案例教程"中,我们将深入探讨ADO...

    ADO.Net数据库访问(代码示例)

    ADO.NET是微软.NET框架的一部分,它提供了一组用于与数据源进行交互的组件,使得开发者能够高效、灵活地处理各种数据库操作。这个标题"ADO.Net数据库访问(代码示例)"暗示我们将深入探讨如何使用ADO.NET进行数据库的...

    ADO.NET数据库实例

    ADO.NET是微软.NET框架下的一种数据访问技术,用于与各种关系型数据库进行交互,包括SQL Server、Oracle、MySQL等。这个实例着重展示了如何利用ADO.NET进行数据库的基本操作,如连接数据库、执行SQL语句、处理结果集...

Global site tag (gtag.js) - Google Analytics