ADO.net中数据库连接方式数据库教程
ADO.net中数据库连接方式数据库教程(精选10篇)
ADO.net中数据库连接方式数据库教程 第1篇
ado|数据|数据库|数据库连接
在MSDN中,.net的数据库连接字符串都有详细的说明,我这里以代码范例的方式罗列一些,具体的每一项代表的意义可以参看MSDN.
ADO.net 中数据库连接方式(微软提供)
微软提供了以下四种数据库连接方式:
System.Data.OleDb.OleDbConnection
System.Data.SqlClient.SqlConnection
System.Data.Odbc.OdbcConnection
System.Data.OracleClient.OracleConnection
下面我们以范例的方式,来依次说明:
System.Data.SqlClient.SqlConnection
常用的一些连接字符串(C#代码):
SqlConnection conn
= new SqlConnection( “Server=(local);Integrated Security=SSPI;database=Pubs”);
SqlConnection conn
= new SqlConnection(“server=(local)NetSDK;database=pubs;Integrated Security=SSPI”);
SqlConnection conn = new SqlConnection(
“Data Source=localhost;Integrated Security=SSPI;Initial Catalog=Northwind;”);
SqlConnection conn = new SqlConnection(
“ data source=(local);initial catalog=xr;integrated security=SSPI;
persist security info=False;workstation id=XURUI;packet size=4096; ”);
SqlConnection myConn= new
System.Data.SqlClient.SqlConnection(“Persist Security Info=False;Integrated
Security=SSPI;database=northwind;server=mySQLServer”);
SqlConnection conn = new SqlConnection(
“ uid=sa;pwd=passwords;initial catalog=pubs;data source=127.0.0.1;Connect Timeout=900”);
更多字符串连接说明请看MSDN:
msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemDataSqlClientSqlConnectionClassConnectionStringTopic.asp
System.Data.OleDb.OleDbConnection
常用的一些连接字符串(C#代码):
OleDbConnection conn = new OleDbConnection(@“Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:MyWeb81�5GrocerToGo.mdb”);
OleDbConnection conn = new OleDbConnection(
@“Provider=Microsoft.Jet.OLEDB.4.0;Password=;
User ID=Admin;Data Source=grocertogo.mdb;”);
OleDbConnection conn = new OleDbConnection(
“Provider=MSDAORA; Data Source=ORACLE8i7;Persist Security Info=False;Integrated Security=yes”);
OleDbConnection conn = new OleDbConnection(
“Provider=Microsoft.Jet.OLEDB.4.0; Data Source=c:inLocalAccess40.mdb”);
OleDbConnection conn = new OleDbConnection(
“Provider=SQLOLEDB;Data Source=MySQLServer;Integrated Security=SSPI”);
更多字符串连接说明请看MSDN:
msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemDataOleDbOleDbConnectionClassConnectionStringTopic.asp?frame=true
System.Data.OracleClient.OracleConnection
常用的一些连接字符串(C#代码):
OracleConnection myConn = new System.Data.OracleClient.OracleConnection(
“Data Source=Oracle8i;Integrated Security=yes”);
更多字符串连接说明请看MSDN:
msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemDataOracleClientOracleConnectionClassConnectionStringTopic.asp?frame=true
System.Data.Odbc.OdbcConnection
常用的一些连接字符串(C#代码):
OdbcConnection conn = new OdbcConnection(
“Driver={SQL Server};Server=MyServer;Trusted_Connection=yes;Database=Northwind;”);
OdbcConnection conn = new OdbcConnection(
“Driver={Microsoft ODBC for Oracle};Server=ORACLE8i7;
Persist Security Info=False;Trusted_Connection=yes”);
OdbcConnection conn = new OdbcConnection(
“Driver={Microsoft Access Driver (*.mdb)};DBQ=c:in wind.mdb”);
OdbcConnection conn = new OdbcConnection(
“Driver={Microsoft Excel Driver (*.xls)};DBQ=c:inook1.xls”);
OdbcConnection conn = new OdbcConnection(
“Driver={Microsoft Text Driver (*.txt; *.csv)};DBQ=c:in”);
OdbcConnection conn = new OdbcConnection(“DSN=dsnname”);
更多字符串连接说明请看MSDN:
msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemDataOdbcOdbcConnectionClassConnectionStringTopic.asp?frame=true
其他厂商提供的数据库连接:
DB2Connection myConn = new IBM.Data.DB2.DB2Connection(
“DATABASE = SAMPLE;UID=; PWD=
;”);
DB2Connection myConn = new IBM.Data.DB2.DB2Connection(“DATABASE = SAMPLE”);
BdpConnection myConn = new Borland.Data.Provider.BdpConnection(“assembly=Borl
and.Data.Mssql,Version=1.1.0.0,Culture=neutral,PublicKeyToken=91d62ebb5b0d1b1b;ve
ndorclient=sqloledb.dll;osauthentication=False;database=;usernam
e=;hostname=;password=
;provider=MSSQL”);
BdpConnection myConn = new Borland.Data.Provider.BdpConnection(“assembly=Borl
and.Data.Db2,Version=1.1.0.0,Culture=neutral,PublicKeyToken=91d62ebb5b0d1b1b;ve
ndorclient=db2cli.dll;database=;username=;
password=
;provider=DB2”);
Connection Pooling
在SQL Server、OLE DB和.NET框架结构中的Data Provider中,都提供了隐式的连接池连接支持,
ADO.net中数据库连接方式数据库教程
,
你可以在ConnectionString中指定不同的参数值控制连接池的行为。比如下面的例子使OLE DB的连接池无效并自动地进行事务处理:
Provider=SQLOLEDB;OLE DB Services=-4;Data Source=localhost;Integrated Security=SSPI;
在SQL Server.NET Data Provider中提供了以下参数设置控制连接池的行为:Connection Lifttime、Connection Reset、Enlist、Max Pool Size、Min Pool Size和Pooling。
更多数据库连接信息,以及非ADO.net的连接字符串可以参看:
www.connectionstrings.com/
--
ADO.net中数据库连接方式数据库教程 第2篇
了解在 ADO.NET 中对于从您的数据源访问元数据的增强支持,
ADO.NET 2.0 中的架构数据库教程
,
ADO.net中数据库连接方式数据库教程 第3篇
客户端与数据库存取模式在A-DO.NET有连接与脱机模式两种,连接模式适用于数据量比较少的状况,脱机模式则适用于数据量比较多的状况。以SQL Server数据库为例来说明两种不同的数据读取方式。
1.1 连接模式
假定在一个Combo Box控件中显示所有的员工姓名,可进行如下操作:
利用Connection、Command和DataReader对象连接数据库的存取方式,因为从头到尾都是保持连接的状态,所以这种方式并不适合在数据量大的状态或是Internet的环境中。DataReader对象只是一个只读的对象,只能从头到尾进行读取数据的操作,不能修改记录。如果只是想查询记录的话,这种方式的效率更高些。但不能再次从头进行读取的动作,要解决这个问题,就需再次建立Command对象,并在这个对象中进行数据存取的操作。
1.2 脱机模式
假定利用一个DataGrid控件显示所有员工信息,可进行如下操作:
DataSet在ADO.NET中非常重要,利用Connection、Command、DataAdapter和DataSet对象,可针对任何一种类型数据进行存取操作,这种方式更灵活,同时还拥有数据库应有的主要功能。是在客户端的内存中通过DataAdapter对象切割出一块空间,并将Command对象向数据库所获得的数据放入其中,此时客户端数据存取直接针对这块内存空间进行,而且速度很快。
2 数据库的添加、删除和修改
2.1 在DataGrid控件中进行数据更新
(1)在窗体中定义各种对象
(2)在Form_load事件中添加如下代码,利用Data Grid控件显示数据
(3)在添加数据事件中输入如下代码,数据通过文本框录入
(4)在删除事件中输入代码
(5)在修改事件中输入代码
在这种方法中,通过DataSet的Table对象的行Rows进行数据的添加和删除,再通过DataAdapter对象的Update方法更新实际的数据库。这种方法代码少,对数据量较少的情况操作比较方便,但数据量大的时候,因为要通过DataGrid控件查找记录,而不能通过条件查找,比较费时,不方便。
2.2 利用Command对象操作数据库
(1)在添加数据事件中输入如下代码,数据通过文本框录入
(2)在修改事件中输入如下代码
(3)在删除事件中只需将修改事件中的SQL语句改为
从以上代码可以看出,方法的核心就是设定Command对象的命令文本Command Text,可以为各种SQL语句,然后利用Command对象的ExecuteNoQuery方法执行SQL操作,就可直接进行数据库的存取。方法非常灵活,可以按条件查找到相应的记录再进行操作,难点是组合SQL语句比较复杂,容易出错。
2.3 利用Command对象的Parameter进行操作
无须组合复杂SQL语句,以添加记录为例(只给出关键代码):
SQL语句组合比较简洁,操作也很灵活,成为ADO.NET中最常用的数据存取操作方法。
3 结束语
通过以上几种方法的比较,可加深对ADO.NET中数据库访问技术的理解,从而采取最合适方式进行操作。
参考文献
[1]金旭亮.编程的奥秘-.NET软件学习与实践[M].北京:电子工业出版社,2006-01:244-249.
[2]郭瑞军.Visual Basic.NET数据库开发实例精粹[M].北京:电子工业出版社,2006-05:125-128.
[3]康祥顺.Visual Basic.NET案例开发集锦[M].北京:电子工业出版社,2006-01:418-424.
ADO.net中数据库连接方式数据库教程 第4篇
ADO.net中数据库连接方式数据库教程 第5篇
数据的内存中表示形式
在 ADO 中,数据的内存中表示形式为记录集。在 ADO.NET 中,它为数据集。它们之间有重要的差异。
表的个数
记录集看起来像单个表。如果记录集将包含来自多个数据库表的数据,则它必须使用 JOIN 查询,将来自各个数据库表的数据组合到单个结果表中。
相反,数据集是一个或多个表的集合。数据集内的表称为数据表;明确地说,它们是 DataTable 对象。如果数据集包含来自多个数据库表的数据,它通常将包含多个 DataTable 对象。即,每个 DataTable 对象通常对应于单个数据库表或视图。这样,数据集可以模仿基础数据库的结构。
数据集通常还包含关系。数据集内的关系类似于数据库中的外键关系,即它使多个表中的行彼此关联。例如,如果数据集包含一个有关投资者的表和另一个有关每个投资者的股票购买情况的表,则数据集可能还包含一个关系来连接投资者表的各个行和购买表的对应行。
由于数据集可以保存多个独立的表并维护有关表之间关系的信息,因此它可以保存比记录集丰富得多的数据结构,包括自关联的表和具有多对多关系的表。
数据导航和游标
在 ADO 中,您使用 ADO MoveNext 方法顺序扫描记录集的行。在 ADO.NET 中,行表示为集合,因此您可以像依次通过任何集合那样依次通过表,或通过序号索引或主键索引访问特定行。DataRelation 对象维护有关主记录和详细资料记录的信息,并提供方法使您可以获取与正在操作的记录相关的记录。例如,从 Investor 表的“Nate Sun”的行开始,可以定位到 Purchase 表中描述其购买情况的那组行。
“游标”是数据库元素,它控制记录导航、更新数据的能力和其他用户对数据库所做更改的可见性。ADO.NET 不具有固有的游标对象,而是包含提供传统游标功能的数据类。例如,在 ADO.NET DataReader 对象中提供只进、只读游标的功能。有关游标功能的更多信息,请参见数据访问技术。
将打开连接的时间降至最低
在 ADO.NET 中,打开连接的时间仅足够执行数据库操作,例如“选择”(Select) 或“更新”(Update),
您可以将行读入数据集中,然后在不保持与数据源的连接的情况下使用它们。在 ADO 中,记录集可以提供不连接的访问,但 ADO 主要是为连接的访问设计的。
ADO 和 ADO.NET 中的不连接处理之间存在一个显著差异。在 ADO 中,通过调用 OLE DB 提供程序来与数据库通信。但在 ADO.NET 中,您通过数据适配器(OleDbDataAdapter、SqlDataAdapter、OdbcDataAdapter 或OracleDataAdapter 对象)与数据库通信,这将调用 OLE DB 提供程序或基础数据源提供的 API。ADO 和 ADO.NET 之间的主要区别在于:在 ADO.NET 中,数据适配器允许您控制将对数据集所做的更改传输到数据库的方式,方法是实现性能优化、执行数据验证检查或添加其他任何额外处理。
注意 数据适配器、数据连接、数据命令和数据读取器是组成 .NET Framework 数据提供程序的组件。Microsoft 和第三方供应商可能会提供其它提供程序,这些提供程序也可集成到 Visual Studio 中。有关不同 .NET 数据提供程序的信息,请参见 .NET 数据提供程序。
在应用程序间共享数据
在应用程序间传输 ADO.NET 数据集比传输 ADO 不连接的记录集要容易得多。若要将 ADO 不连接的记录集从一个组件传输到另一个组件,请使用 COM 封送。若要在 ADO.NET 中传输数据,请使用数据集,它可以传输 XML 流。
相对于 COM 封送,XML 文件的传输提供以下便利之处:
更丰富的数据类型
COM 封送提供一组有限的数据类型(由 COM 标准定义的那些类型)。由于 ADO.NET 中的数据集传输基于 XML 格式,所以对数据类型没有限制。因此,共享数据集的组件可以使用这些组件一般会使用的任何丰富的数据类型集。
性能
传输大型 ADO 记录集或大型 ADO.NET 数据集会使用网络资源;随着数据量的增长,施加于网络的压力也在增加。ADO 和 ADO.NET 都使您可以最大限度地降低所传输的数据。但 ADO.NET 还提供另一个性能优势:ADO.NET 不需要数据类型转换。而需要 COM 封送来在组件间传输记录集的 ADO,则需要将 ADO 数据类型转换为 COM 数据类型。
穿透防火墙
防火墙可以影响试图传输不连接的 ADO 记录集的两个组件。请记住,防火墙通常配置为允许 HTML 文本通过,但防止系统级请求(如 COM 封送)通过。
因为组件使用 XML 交换 ADO.NET 数据库,所以防火墙可以允许数据集通过。
ADO.NET数据库访问技术 第6篇
本篇文章主要介绍了ADO.NET数据库访问技术以及在线或离线访问数据库的实现步骤,有需要的朋友可以参考下
一. ADO.NET的定义
ADO.NET来源于COM组件库ADO(即ActiveX Data Objects),是微软公司新一代.NET数据库的访问模型,是目前数据库程序设计人员用来开发基于.NET的数据库应用程序的主要接口,它利用.NET Data Provider(数据提供程序)进行数据库的连接和访问,通过ADO.NET数据库程序能够使用各种对象来访问符合条件的数据库内容,让提供数据库管理系统的各个厂商可以根据此标准开放对应的.NET Data Provider,这样设计数据库应用程序人员不必了解各类数据库底层运作的细节,只要掌握ADO.NET所提供对象的模型,便可访问所有支持.NET Data Provider的数据库。
ADO.NET结构模型如下所示:
图1. ADO.NET结构模型
ADO.NET是一个类库,这些类提供了很多的对象,可用于完成数据库连接和增删查改等操作。其中包括如下五个对象: 1)Connection:用来连接数据库(SQL Server使用的是SqlConnection对象); 2)Command:用来对数据库执行SQL命令,如增删查改等操作; 3)DataReader:用来从数据库中返回只读数据,用数据源填充DataSet对象; 4)DataAdapter:与DataSet对象相结合使用,实现对数据库的控制; 5)DataSet:可看作离线时内存中的数据库; 这五个对象提供了两种读取数据库的方式; 第一种方式:使用Connection、Command、DataReader,其权限只能读取或查询数据库; 第二种方式:使用Connection、Command、DataAdapter、DataSet,其权限能进行各种数据库的操作。 ADO.NET读取数据库操作示意图:
图1. ADO.NET结构模型
二. 使用ADO.NET在线访问数据库的步骤(这里用的是SQL Server 数据库)
1. 连接数据库
直接上一段代码:
using System.Data.SqlClient;string source = ”server=(local); integrated security=SSPI; database=myDateabase;User ID=sa;pwd=sa“; SqlConnection conn = new SqlConnection(source); conn.Open(); // 对数据库数据进行操作 conn.Close();
(1). 首先添加命名空间System.Data.SqlClient;
(2). 定义数据库连接字符串:
第一种方法:直接把数据库连接字符串存放在字符串对象中,如上代码所示;
第二种方法Web:将数据库连接信息存放在web.config配置文件中,然后通过使用ConfigurationStringSettings类进行调用。来个例子说明一下:
(a). 首先,在web.config配置文件的部分定义数据库连接信息:
(b). 在项目文件中,添加对Configuration的引用,在头部添加using System.Configuration。然后定义数据库连接字符串为:
代码如下:
string connstring = ConfigurationManager.ConnectionStrings[”myDatabase“].ConnectionString;
备注:必须添加对System.Configuration程序集的引用,才能解析上述代码中使用的ConfigurationManager类。
2. 创建数据库连接
1)创建Connection对象:
string conn = new SqlConnection(connString);
2)打开数据库: conn.Open(); 一般情况下,当在.NET中使用“稀缺”的资源时,如数据库连接、窗口或图形对象,最好确保每个资源在使用完毕后立即关闭。尽管.NET的设计人员实现了自动垃圾收集机制,垃圾最终会被回收,但仍需要尽可能早地释放资源,以避免出现资源匮乏的情况。 当编写访问数据库的代码时,因为使连接打开的时间略长于需要的时间,就可能影响其他会话。在极端的情况下,不关闭连接可能会使其他用户无法进入一整组数据表,极大地降低应用程序的性能。主要有两种方式可以确保数据库连接等类似的“稀缺”资源在使用完后立即释放。这两种方式如下: (1)第一种方式:采用try...catch...finally语句块 确保在finally中关闭任何已打开的连接。
try { // open the connection conn.Open(); // 对数据库数据进行操作 } catch (SqlException ex) { // log the exception } finally { conn.Close(); }
在给定的方法中可能会打开许多资源,这样try...catch...finally块的层次有时候不容易看清,
还有一种方式可以确保资源的关闭――using语句。 (2)使用using语句块
using(SqlConnection conn = new SqlConnection(connstring)){ // Open the connection conn.Open(); // 对数据库数据进行操作 }
无论块是如何退出的,using子句都会确保关闭数据库连接。
3. 创建数据库操作命令:
Connection对象与数据源建立连接后,使用Command对象对数据源执行查询、插入、修改和删除等操作。
(1) 创建SQL数据库操作命令: sqlQuery查询语句具体规则请详见我的系列文章:【读书笔记】SQL Server查询语句_邓智容 (2) 创建Command对象:
(a). 方法一:
代码如下:
SqlCommand command = new SqlCommand(); command.Connection = conn; command.CommandText = ”SQL语句“;
(b). 方法二:
SqlCommand command = new SqlCommand(”SQL语句“, conn);
备注: 1). SQL查询语句若含有C#程序的变量并以字符串形式连接,则应注意数据为非数字的变量应用单引号括起来; 2). 在SQL查询语句中使用参数化查询语句的话,譬如:
command.CommandText = ”SELECT * FROM myTable WHERE siteName=@siteName“;
当需要给该参数赋值时,可以使用Command对象建立参数对象,然后再赋值:
代码如下:
command.Parameters.Add(new SqlParameter(@siteName, siteName)); command.Parameters[”@siteName“].Value = ”#“;
备注: 在.Net Framework 2.0中SqlClient增加了AddWithValue(string parameterName, object value)方法。该方法简化了调用储存过程的输入参数过程,在运行时对所输入的数据类型进行判断,获取对应的数据库类型。 因此该方法在运行效率上比用 Add(string parameterName, SqlDbType sqlDbType, int size, string sourceColumn)方法要低。 在效率要求较高的地方仍然建议使用Add()方法,其它场合可以使用AddWithValue()简化代码编写量。
4. 执行sqlQuery命令:
定义好命令后,就需要执行它。执行的语句有多种方式,这取决于要从命令中返回什么数据。Command类提供了下述可执行的命令: (1) ExecuteNonQuery() ―― 执行命令,但不返回任何结果。一般用于UPDATE、INSERT或DELETE语句中,其中唯一的返回值是受影响的记录个数。但如果调用带有输出参数的存储过程,该方法就有返回值。 (2) ExecuteReader() ―― 执行命令,返回一个类型化的IDataReader。是从数据源中选择某些数据的最简单快捷的方法。 (3) ExecuteScalar() ―― 执行命令,返回结果集中的第一行第一列的值。
5. 对数据库操作完毕后关闭数据库连接:
conn.Close();
三. 离线数据库访问
DataAdapter对象主要在Connection对象和DataSet对象之间执行数据的传输工作,将数据填充到DataSet对象中,也可把DataSet对象更新后的数据返回到数据源中,也可架构在Command对象上,通过CommandBuilding对象生成DataAdapter的Insert、Update和Delete等SQL操作命令。使用DataSet和DataTable对象访问数据源后,ADO.NET会自动离线,在内存中处理数据,如有修改数据的操作,将自动重新连接数据源,更新数据库。DataSet对象、DataAdapter对象与数据源之间的关系如下:
DataSet <--->DataAdapter <--->数据源
下面是使用DataAdapter进行离线数据库访问的操作步骤:
1. 创建DataAdapter、DataTable对象(使用的是SQL Server数据库)
代码如下:
SqlAdapter da = new SqlAdapter(”sqlQuery查询语句“, conn); DataSet = ds = new DataSet(); DataTable dt = new DataTable();
2. 将数据填充到DataTable对象
da.Fill(ds, ”TableName“); dt = ds.Tables[”TableName“];
3. 对DataTable中的数据进行处理 TataTable对象的属性和方法有:
名称属性/方法说明
Rows.Add()方法插入新数据行
Rows[n].Delete()方法删除第n行的记录
Rows.Count属性获取行数
Rows[i][”ColumnName“]属性获取第i行、列名为ColumnName的值
Rows[i][j]属性获取第i行、第j列的值
两表连接的SQL语句数据库教程 第7篇
例如:一个二表连接的SQL,有两种写法:
(1)select A.c1,A.c2,B.c1,B.c2
from table1 A,table2 B
where A.id=B.id
(2)select A.c1,A.c2,B.c1,B.c2
from table1 A join table2 B
on A.id=B.id
哪种写法好呢?现在提倡用哪一种?
你喜欢用哪一种?
我习惯用(1)
---这两个哪个好?
其中11楼的回答最为深入,其实这个问题还是有一定的历史原因的,不管你习惯什么样的写法只要知道来龙去脉就不会再被细枝末节来迷惑了。以下观点为个人认识,如有偏差欢迎指正。
简单的说,前者是ansi sql 86标准后者是ansi sql 92标准(*****) ,这个观点最容易被人接受。
什么是ansi?美国国家标准局,iso的重要成员之一,19就有了。
什么是ansi sql?就是ansi注意到了sql的生产力,于是规范化了一下。
什么是sql?他是ibm发明的,oracle发扬广大的一门语言。
为什么是两家公司?。
70年代初因为ibm内部各方利益斗争激烈,导致某大牛的研究成果只能以论文方式发表。
70年代末某小公司把此技术用在商业领域就成了oracle,直到n年后ibm db2才出来。
所以,sql不是ansi 发明的,ansi 标准也不能通吃所有数据库平台。
比如下面这个是什么数据库的语法?反正ansi 标准在他那里是报错的。
select * from(a inner join b on a.id=b.id) inner join c on a.id=c.id
那么在ansi86之前的数据库有哪些?oracle和db2是肯定的了,
另外还有一些当时的小角色:Informix,dbase系列等。
而sybase的数据库和SQLServer是86年之后出来的,而前面那个奇怪的join语法的access是90后的。
古老的sqlserver和oracle我都没有用过,反正在用oracle8i时还不支持ansi 92的inner join,他是生的。一直到本世纪发布的oacle9i 才改了过来。用多了t-sql的人会问 left join咋办,where a.id=b.id(+) 就可以了,人家没那么笨的,t-sql以前还有*=这样的表示。
那么这么看貌似ansi的规范力度不够?其实不是,国际标准化也不可能一刀切,在ansi92 当中定义了4个级别,n多条款。大意就是大家符合入门级就行了,其他高级别仅供参考,甚至iso根本不会验证其他级别..而诸如inner join和left join之类的都是过渡级的,濉
所以我前面打了5个星星的那句话并不是完全正确的,正确的应该是
前者符合ansi 86 标准和ansi 92入门级标准,后者符合ansi92 过渡级标准。
不是oracle8i不符合ansi92,而是没有符合ansi92的高级别规范,而完全实现高级别标准的数据库系统是没有的。
早在oracle7就已经完全符合ansi92了,当然是指入门级,而且他就是ansi92 的模版范例。
--回到上面的话题,这两个哪个好?
性能当然完全一样,区别只是习惯和喜好,但也因为标准级别不同而具有不同的风险。
如果想要优雅而易于维护且不容易写错的代码,当然用高标准的第二种方法。
如果必要考虑风险这个因素,比如涉及到多种平台的迁移或者整合,你应该用第一种,起码在两个表的情况下他还是比较安全的。
----
ADO.net中数据库连接方式数据库教程 第8篇
1 ADO.NET 技术及其特点
1.1 ADO.NET 技术原理
ADO.NET, 其作为Microsoft新一代技 术 , 是ADO组件的后继 者 ; 主要目的 是在.NET Framework平台存取 数据【 1】。提供一致的对象模型, 可以存取和编辑各种数据源 的数据 ,即对这些数 据源提供 了一致的 数据处理 方式【2】。 对于ADO.NET技术中 , 其在保存 、 传递数据 过程中 , 多使用XML格式进行传 输 。 XML格式数据 可以与其 他平台的 应用程序 兼容 , 能够实现 多平台中XML文件信息 的数据交 换 。 并且 ,对于ADO.NET数据, 还可以访问以及处理数据类库, 如图1所示。
1.2 技术特点
对于ADO.NET技术, 其具备以下特点: 在ADO.NET之中, 其连接的数据源中, 共有4种数据可以提供相应程序【3】。如果要在SQL Server数据库应用程序中, 使用其中的任何一种数据来提供数据库操作程序, 则必须要在后台代 码之中 ,引用与其相互对应的命名空间, 并且其类的名称也会随之发生相应的变化。 ADO.NET是数据库操作技术, 同时还有互操作性, 并兼容了可维护、 可编程、 可伸缩的优点。 而且, ADO.NET应用程序可以利用XML的灵活性和广泛接受性 。
2 ADO.NET 技术的优势
在SQL Server数据库中, 应用ADO.NET技术, 可以提升数据库程序可编程性, 例如对于数据中的命令, 可以将其提取生成相应的执行程序, 并且在执行SQL语句以及存储过程中, 能够有效完成相应的数据管理任务【4】。 针对SQL Server数据库不连接的应用程序, 应用ADO.NET技术, 可以确保数据库具备更好的不连接程序性能, 使其可以优于ADO的不连接记录集【5】。 并且在SQL Server数据库中 , ADO.NET技术还可以节省有限资源, 实现SQL Server数据库在处理信息数据的可缩放性, 提升SQL Server数据库处理效率, 提升SQL Server数据库数据处理能力。
3 具体应用
3.1 处理 SQL Server 数据库事务
问题描述: 使用ADO.NET连接SQL Server数据库, 自动增长字段用作主键, 处理事务时的基本方法。 假设在数据库中存在以下两张数据表: User表, 存放用户的基本信息, 基本结构如表1所示。
User Depart表 , 存放用户 所拥有的 部门 ( 假设一个 用户拥有多个部门, 虽然听起来有点别扭, 此处仅作示例, 可以理解为一个用户拥有多个职位等等), 该表的基本结构如表2所示。
需要向数据库中插入一条用户信息的时候, 为了保证数据的一 致性 , 必须使用 事务的方 式 “同时 ” 操作User表和User Depart表 。 先将用户姓名写入User表中 , 再将其所拥有的部门写入User Depart表中, 使用事务机制保证这两步操作要么同时成功, 要么同时失败。 问题就出在: 第一步操作完成后, 并不知道该向第二步操作写入的ID_User的值是多少,因为这个值是SQL Server自动生成的。
解决方案 : 在数据库 实际处理 中 , 可以借助SELECT IDENT_CURRENT ( 'User') AS ‘ New Insert ID’ 来查询最 近一次插入User表的数据的自动编号的值【6】。
其ADO.NET应用程序如下:
3.2 数据库增删改
问题描述: 使用数据提供程序访问 数据库操 作 , 首先 ,建立数据库连接; 创建SQL命令; 执行SQL命令; 处理SQL命令结果 。 建立相应 的SQL数据库连 接 ; 为其建立 其Data Adapter对象 ;
其代码如: Sql Data Adapter obj Data Adapter
同时可以建立Data Set对象, 用以填入记录相关数据;
应用方案: 当在Data Set对象中, 使用Data Adapter对象可以获取记录的相关数据, 它不仅是Data Set以及Connection对象之间数据源的桥梁【7】, 同时也可以及时地获取Data Set对象的记录数据, 并可得到更新数据源数据。
Data Adapter的Fill方法使用Data Adapter的Select Command的结果集来填充Data Set。 例如: Sql Connection con;
使用Data Adapter的Fill方法填充Data Set中的Data Table后, 以断开的方式来操作Data Set中的数据库内容, 包括对数据库中数据的查询、 插入以及更新、 删除等各项操作。 同时,在插入以及更新数据库中Data Row对象之后, 由于该操作主要针对在内存中保存的Data Set对象, 因而还要更新数据库中的数据源数据。
Data Set、 Data Table、 Data Row对象将数据库 、 数据表和记录转换成对象结构, Data Set数据库包含Data Table Collection集合对象, 集合对象中的每一个Data Table是一个数据表, 包含Data Row Collection集合对象 , 每一个Data Row是一条记录 。 调用Data Adapter的Update方法, 可将Data Set中的更改解析回数据源。 可以通过在设计时指定命令语法 (使用SQL命令或存储过程)。 Data Set对象插入新记录操作是针对Data Table对象, 所谓插入记录就是新增加Data Row对象, 如:
以上代码使用New Row() 方法新增加了一行, 接着可以输入字段值, 如:
最后将Data Row对象添加到Data Table对象。
4 应用价值分析
4.1 节省数据处理时间
在SQL Server数据库中, 应用ADO.NET技术, 能够优化数据库算法, 为数据库对象提供一致模型, 改善数据库处理数据的方法, 节省数据库计算时间, 发挥实际应用价值。
4.2 提升数据库应用效益
对于SQL Server数据库应用中, 采取ADO.NET技术, 能够提升SQL Server数据库的 实际应用 效益 , 有效通过ADO.NET技术算法 , 提升SQL Server数据库处理数据的能力 , 从而提高数据库信息维护工作的效率, 确保数据库信息的安全性, 具有积极应用效果。
5 结语
ADO.NET数据库访问探讨 第9篇
.NET Framework数据提供程序包含以下4个核心类:
1)Connection:建立与数据源的连接;
2)Command:对数据源执行操作命令,用于修改数据、查询数据和运行存储过程等;
3)Data Reader:从数据源获取返回的数据;
4)Data Adapter:用数据源数据填充Data Set,并可以处理数据更新。
Data Set是ADO.NET的断开式结构的核心组件。设计Data Set的目的是为了实现独立于任何数据源的数据访问,可以把它看成是内存中的数据库,是专门用来处理数据源中读出的数据;其优点是离线式,一旦读取到数据库中的数据后,就在内存中建立数据库的副本,在此之后的操作,知道执行更新命令为止,所有的操作都是在内存中完成。不管底层的数据库时哪种形式,Data Set的行为都是一致的;Data Set是数据表(Data Table)的集合,它可以包含任意多个数据表,而且每个Data Set中的数据表对应一个数据源中的数据表(Table)或者视图(View)。
操作步骤:
1 建立数据库
既然要提取数据,首先必须建立好数据库。只有建立了数据库,并对数据的格式进行严格的定义,才能对其进行操作。并且在编程的过程中要随时了解数据库里面数据的类型,这样才能进来避免函数在调用数据是出错。
2 配置web.config文件
这一步也是非常关键的一步,如果不对其进行配置,尽管建立了数据库,但是程序却不能找到相应的数据库,后期代码尽管正确,也会报错。
具体操作为:在网站中找到并打开相应的web.config文件,在里面找到
其中,Data Source表示SQL Server2005数据库服务器名称,Attach Db Filename表示数据库的路径和文件名,|Data Directory|表示网站默认数据库路径App_Data。当然,这是配置连接文件中的一种,还有其他的方式可以配置比如结合用户名和密码的。
3 利用Connection对象创建数据库连接
string sqlconnstr=Configuration Manager.Connection Strings["Connection String"].Connection String;
配置好web.config文件后,就能找到相应的数据库。但是要对数据库进行操作,必须先对其进行连接。
4 利用Command对象对数据源执行SQL命令
当连接完成,接下去就是对数据源中的数据进行操作(添加、删除、更新等)。这项工作由Command对象来完成。
Sql Command sqlcommand=new Sql Command();
//Command对象的属性赋值
sqlcommand.Connection=sqlconn;
sqlcommand.Command Text="delete from student where no=@no";//删除操作
sqlcommand.Command Text="insert into student(no,name,sex,birth,address,photo)values(@no,@name,@sex,@birth,@address,@photo)";//插入操作
sqlcommand.Command Text="select*from student";//选择操作
sqlcommand.Command Text="update_student";//更新操作
5 利用Data Reader对象读取数据源的数据
当完成对数据源中的数据进行操作后,接下来就要对操作后的数据进行读取。以便显示其结果。而Data Reader对象就是完成对数据源中的数据进行读取。
6 Data Set对象与Data Aapter对象配合,完成数据的查询和更新操作。
总之,编程过程是一个非常复杂的过程,如何系统化分析,让复杂问题条理化,简单化,这是编程人员特别是初学者应该遵循的一条颠扑不破的真理。理解和掌握事物内部的规律,严格按照问题的解决思路进行深入研究,能够使初学者迅速掌握编程方法,从而摆脱菜鸟进入程序员行列。
摘要:ASP.NET应用程序的数据访问是通过ADO.NET进行的,ADO.NET可以使Web应用程序从各种数据源中快速访问数据。从传统的数据库到XML数据存储,各种各样的数据源都连接到ADO.NET从而更灵活地访问数据,减少访问数据所需的代码,提高了开发效率和Web应用程序的性能。对于初学者来说,对ADO.NET数据库访问是非常头疼的问题,往往编程过程中顾此失彼,晕头转向,甚至有的就此放弃。为了理顺思路,就一点亲身体会在此与大家共勉。
关键词:ADO.NET,数据访问,数据源,.NET Framework
参考文献
[1]郑千中.C#编程网络大讲堂[M].北京:清华大学出版社,2011:401-435.
[2]陈伟.ASP.NET3.5网站开发实例教程[M].4版.北京:清华大学出版社,2011:165-177.
[3]支和才.ADO.NET技术研究[J].软件导刊,2011(9):121-123.
应用ADO.NET访问数据库 第10篇
创建Command对象执行SQL命令;创建Data Adapter对象,支持数据源和数据集之间的数据交换;创建Dataset对象,将数据源中所取得的数据保存在内存之中,并对数据进行各种操作等过程。
假定现已使用Microsoft Access 2000建立了Student.mdb数据库,数据库中建有一个如前表所示的数据表,数据表取名为studentbook,表中的字段名分别为Num(学号)、Name(姓名)、Age(年龄)、Sex(性别)和specialities(专业),现以该数据表为例,介绍如何应用ADO.NET编写访问数据库应用程序。
1 创建和使用connection对象
如果要访问数据源中的数据,必须先与数据库建立连接,在ADO.NET中,可以使用两个类来创建connection对象:
SQLConnection类:管理与SQL Server 7.0版或更高版本的连接,该类类位于system.Data.sqlclient命名空间。
OLEDBConnection:管理与可通过OLE DB访问的数据源的连接。该类位于System.Data.OLe Db命名空间。
现以连接OLE DB数据源为例,并假设已引入相关的命名空间。创建OLEDBConnection对象语法格式:Dim对象名As New OLEDBConnection(连接字符串)
1.1 OLEDBConnection类所提供的属性
1)Connectionstring属性:Connectionstring属性用于设置连接到数据库的连接字符串。连接字符串采用由分号分隔的一系列“关键词=值”的形式。其中各“关键词”和“值”为本类的其他属性名和相应的属性值。
2)Connection Timeout属性:设置连接超时的时间。该属性的默认值为15秒。
3)Data Base属性:连接的数据库名。
4)Datasource属性:数据库所在位置及名称。
5)Provider属性:设置想连接的数据库种类。其中,MSDA-ORA为Oracle数据库;SQLOle Db为SQLServer数据库;Microsoft.Jet.o LEDB.4.0为Access数据库。
1.2 Ole Dbconnection类提供的主要方法
1)open方法:用于打开数据库。
2)close方法:close方法用于关闭数据库。
2 创建和使用Command对象
当使用连接对象的open方法与数据库建立连接后,需要执行相应的SQL命令对数据库进行操作,这样就需要创建Command对象。下面以创建Ole Dbcommand对象为例,来介绍创建command对象的语法格式:
Dim对象名As New Ole Dbcommand(SQL字符串,connection对象)
该类提供的相关属性如下:
1)command Text属性:用于设置或获取要执行的SQL语句。
2)command Type属性:用于设置或获取命令的种类,有Text、Table Direct及storeprocedure三种分别代表SQL命令,数据表及存储程序名。
3)connection属性:用于设置或获取connection对象。
3 创建和使用Data Adapter对象
当连接数据库,并执行了SQL命令之后,接着便是将数据库中的数据读入到Dataset对象中,Data Adapter对象就是负责在数据源与Dataset对象之间交换数据,它不仅能交数据源中的数据读入Dataset对象,还可将Dataset对象中更新的数据写回到数据库中去。
下面以创建Ole Db Data Adapter对象为例来说明。创建Ole Db Data Adapter对象的语法格式如下:
Dim对象名As New Ole Db Data Adapter(command对象)
只要在创建Data Adapter对象时,输入一个command对象即可。该类提供的相关属性如下:
Insertcommand属性:用于设置或取得对数据源添加数据的SQL命令。
Deletecommand属性:用于设置或取得对数据库删除数据的SQL命令。
Selectcommand属性:用于设置或取得对数据源查询数据的SQL命令。
Updatecommand属性:用于设置或获取对数据源更新数据的SQL命令。
若将SQL语句执行后的结果读入到Dataset对象中,需使用Data Adapter的Fill方法。
Fill的语法格式如下:Fill(Dataset对象,“数据表名”)
该方法用于将数据源取得的数据,放入数据集对象的数据表中,其中第一个参数是数据集对象,第二个参数是数据表的名称。下面以一个例子来说明。
此例中,第10行语句是创建一个Dataset对象,第11行的Fill语句是将查询数据源的结果放入Dataset对象的studentbook数据表中.
4 创建和使用Dataset对象
Dataset是ADO.NET的核心,用于支持ADO.NET中的离线数据访问。Dataset的结构与关系数据库的结构很相似,可以把Dataset想成内存中的数据库,Dataset对象表示了数据库中完整的数据,包括表和表之间的关系等。当使用Data Adapter的Fill方法,将所连接数据库中的数据放入Dataset对象之后,与数据库的连接即断开。此时,在应用程序中将直接从Dataset对象中读取数据,不再依赖于数据库了。这样,在多用户共同存取的网络系统中,可有效地降低数据库服务器的负担,提高数据存取的效率。
在VB.NET中可使用Dataset类来创建Dataset对象,其语法格式如下:
Dim对象名As Dataset()
在Dataset对象中有许多属性,其中最重要的是Tables属性和Relations属性。Tables属性值是一个Data Table对象集,每个Data Table对象代表了数据库中的一个表。
每个Datatable数据表都由相应的行和列所组成。所以,一个Datatable对象都有两个重要的属性:columns属性;Rows属性。
Columns属性值是一个数据表的Datacolumn对象集,每一个Datacolumn对象代表数据表中的每个列
Rows属性值是一个数据表的Data Row对象集,每个Data Row对象代表了数据表达式的一行数据。
此外,Dataset对象还有一个Relations属性,该属性值是Data Relation对象集,每个Data Relation对象表达了数据表之间的关系。
当创建了Dataset对象,并将数据库中的数据放入Dataset对象之后,就可以在离线的状态下使用Dataset对象、Data Table对象、Datacolumn对象和Data Row对象所提供的方法,对Dataset对象中的数据进行添加、修改、删除等各种操作。如,要删除一个数据表中某行记录,可以应用Data Row对象的Re Move方法,将该记录从数据表中完全删除。
参考文献
[1]柴晟.ADO.NET数据库访问技术案例式教程[M].北京航天航空大学出版社,2012.
[2](美)斯赛帕.ADO.NET2.0技术内幕[M].贾洪峰译.清华大学出版社,2007.
ADO.net中数据库连接方式数据库教程
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。


