【ACCESS精品源码栏目提醒】:网学会员--在 ACCESS精品源码编辑为广大网友搜集整理了:数据库连接方式 - 其它资料绩等信息,祝愿广大网友取得需要的信息,参考学习。
C 连接 SQL Server 数据库的几种方式--se rverdata source 等方式 .发布时间: 2011-11-15 14:28:51 作者:本站编辑 来源: 青岛北大青鸟 浏览次数:367681 我要评论1 摘要: 如何使用 Connection 对象连接数据库? 对于不同的.NET 数据提供者,ADO.NET 采用不同的 Connection 对象连...如何使用 Connection 对象连接数据库?对于不同的.NET 数据提供者,ADO.NET 采用不同的 Connection 对象连接数据库。
这些Connection 对象为我们屏蔽了具体的实现细节,并提供了一种统一的实现方法。
Connection 类有四种:SqlConnection,OleDbConnection,OdbcConnection 和 OracleConnection。
SqlConnection 类的对象连接 SQL Server 数据库;OracleConnection 类的对象连接 Oracle 数据库;OleDbConnection 类的对象连接支持 OLE DB 的数据库,如
Access;而OdbcConnection 类的对象连接任何支持 ODBC 的数据库。
与数据库的所有通讯最终都是通过 Connection 对象来完成的。
SqlConnection 类Connection 用于与数据库“对话”,并由特定提供程序的类(如 SqlConnection)表示。
尽管 SqlConnection 类是针对 Sql Server 的,但是这个类的许多属性、方法与事件和 OleDbConnection 及 OdbcConnection 等类相似。
注意:使用不同的 Connection 对象需要导入不同的命名空间。
OleDbConnection 的命名空间为 System.Data.OleDb。
SqlConnection 的命名空间为 System.Data.SqlClient。
OdbcConnection 的命名空间为 System.Data.Odbc。
OracleConnection 的命名空间为 System.Data.OracleClinet。
我们就可以使用如下两种方式连接数据库,即采用集成的 Windows 验证和使用 Sql Server 身份验证进行数据库的登录。
1、集成的 Windows 身份验证语法范例string constr quotserver.databasemyschoolintegrated securitySSPIquot说明:程序代码中,设置了一个针对 Sql Server 数据库的连接字符串。
其中 server 表示运行 Sql Server 的计算机名,由于程序和数据库系统是位于同一台计算机的,所以我们可以用.或 localhost取代当前的计算机名。
database 表示所使用的数据库名myschool。
由于我们希望采用集成的 Windows 验证方式,所以设置 integrated security 为 SSPI即可。
2、Sql Server 2005 中的 Windows 身份验证模式如下:string constr quotserver.databasemyschooluidsapwdsaquot说明:程序代码中,采用了使用已知的用户名和密码验证进行数据库的登录。
数据库连接字符串是不区分大小写的。
uid 为指定的数据库用户名,pwd 为指定的用户口令。
为了安全起见,一般不要在代码中包括用户名和口令,你可以采用前面的集成的 Windows 验证方式或者对 Web.Config 文件中的连接字符串加密的方式提高程序的安全性。
3、Sql Server 2005 中的 Sql Server 身份验证模式如下:string constr quotdata source.initial catalogmyschooluser idsapwdsaquot说明:程序代码中 data source 表示运行数据库对应的计算机名,initial catalog 表示所使用的数据库名。
uid 为指定的数据库用户名,pwd 为指定的用户口令。
4、
Access 数据库的连接字符串的形式如下:string connectionString quotproviderMicrosoft.Jet.OLEDB.4.0data sourcec:DataSourcemyschool.mdbquot说明:程序代码中,通过专门针对
Access 数据库的 OLE DB 提供程序,实现数据库的连接。
这使用的的 OLE DB 提供程序为 Microsoft.Jet.OLEDB.4.0,并且数据库存放在 c:DataSource 目录下,其数据库文件为 myschool.mdb。
view plaincopy to clipboardprint 1. string constr quotserver.databasemyschoolintegrated securitySS PIquot 2. //string constr quotserver.databasemyschooluidsapwdsaquot 3. //string constr quotdata source.initial catalogmyschooluser idsa pwdsaquot 4. SqlConnection con new SqlConnectionconstr 5. // con.ConnectionString constr 6. string sql quotselect count from gradequot 7. SqlCommand com new SqlCommandsqlcon 8. try 9. 10. con.Open 11. MessageBox.Showquot成功连接数据库quot 12. int x intcom.ExecuteScalar 13. MessageBox.Showstring.Formatquot成功读取0条记录quot x 14. 15. catch Exception 16. 17. 18. throw 19. 20. finally 21. 22. con.Close 23. MessageBox.Showquot成功关闭数据库连接quot quot提示信息quot MessageBoxButt ons.YesNoCancel 24. string constr quotse5、Web.config 配置在 ASP.NET 2.0 中,使用了一种在运行时解析为连接字符串值的新的声明性表达式语法,按名称引用数据库连接字符串。
连接字符串本身存储在 Web.config 文件中的 <connectionStrings>配置节下面,以便易于在单个位置为应用程序中的所有页进行维护。
view plaincopy to clipboardprint 1. ltxml versionquot1.0quotgt 2. ltconfigurationgt 3. ltconnectionStringsgt 4. ltadd namequotmyschoolquot connectionStringquotServerlocalhostIntegrate d SecurityTrueDatabasemyschoolPersist Security InfoTruequot provi derNamequotSystem.Data.SqlClientquot /gt 5. lt/connectionStringsgt 6. ltsystem.webgt 7. ltpages styleSheetThemequotDefaultquot/gt 8. lt/system.webgt 9. lt/configurationgt ltxml versionquot1.0quotgt ltconfigur我们也可以用下面的方式从配置文件直接读取数据库连接字符串。
首先我们需要引用 using System.Web.Configuration 命名空间,该命名空间包含用于设置 ASP.NET 配置的类。
string connectionString ConfigurationManager.ConnectionStringsquotmyschoolquot.ConnectionString首先你应该区分 Windows 验证与 Sql 自身的验证的区别。
Windows 验证就是 SqlServer 服务器使用 Windows 自带的验证系统,如果你指定 SqlServer 内 Windows 的一个组有访问的权限,那么加入此组的 Windows 用户都有访问数据库的权限。
此验证有个缺点,就是如果不是在域模式下,无法加入远程计算机的用户,所以如果使用 C/S 方式写程序的话,使用 Windows 验证无法使本地计算机的 Windows 帐户访问远程数据库服务器。
Sql 验证就简单多了,就是使用 sqlserver 的企业管理器中自己定义由 Sql 控制的用户,指定用户权限等。
这个帐户信息是由 SqlServer 自己维护的,所以 SqlServer 更换计算机后信息不会丢失,不用重新设定。
所以如果你的项目使用在一个比较大的网络中,而且对安全要求比较高,那么应该建立域,使用 Windows 验证,而且要与系统管理员配合详细设定可以访问 SqlServer 的 Windows 帐户。
如果使用一个小网络,而且此网络仅用来使用项目,对安全没有高要求,那么使用SqlServer 验证,而且更新,升级等都方便。
Windows 验证与 SqlServer 验证的数据库联接字符串是不同的。
数据访问两种模式的比较数据访问两种模式的比较ASP.NET2.0 扩展了 ASP.NET1.1 里数据访问的模式,简单概括起来具有两种模式1、使用数据源控件(SqlDataSource/ObjectDataSource) 1)建立一个项目 TwoMode 2)建立数据库连接 由于 ASP.NET2.0 提供了 App_Data 目录,所以你可以直接把数据库文件拷贝到该目录下,然后在“解决方案资源管理器”中,刷新该文件,就可以看到该文件了,如下图然后切换到“数据库视图”里,就可以看到该数据库了,如图不过在使用时,有时候,当你把一个新的数据库文件.MDF 拷贝到 App_Code 目录下展开时,会出现连接超时的现象,这是因为系统第一次访问该数据库时,除了需要验证必要的信息外,还需要生成数据库日志文件,所以,你只要再次展开数据库文件即可。
3)连接数据库把数据源控件(为了便于说明,这里使用 SqlDataSource 控件)拖放到 default.aspx 上单击“智能感应”右边的 Configure Data Source,出现数据库连接配置向导这里,系统会子定识别在 App_Data 目录下的数据库,如果你不把数据库放置在 App_Data 下,那你就自己建立连接吧然后把数据库连接保存在 web.config 里下一步,选择数据库当然,你可以测试运行的结果接下来,把一个 GridView 控件放到 default 上,设置数据源为 SqlDataSource1,就可以了你也可以利用“Auto Format”设置其样式(2)数据集和数据适配器(传统的数据访问模式)前面介绍了使用 DataSource 控件访问数据库的过程,本节介绍利用数据适配集/数据适配器的访问数据库。
这两种设计模式的差别,使得 GridView 的设计即要支持 DataSource 控件的数据绑定模式,还需要支持数据集和数据适配器这种数据绑定模式,由于这对峰峦冤孽的存在,才让 GirdView 控件的设计时较为复杂。
当然天天感觉,你只要知道这两种差别并具有一些概念就可以了,也不用深究,毕竟大家不是控件开发专家。
2.4 数据集与数据适配器 VS.NET2005 支持传统的数据绑定方式,并为该方式提供了可视化操作,本级将介绍数据集和数据适配器。
2.4.1 强类型化数据集简介 对于大多数应用程序而言,不管将来应用于 Web Server 上还是 Windows Form 上,数据访问都是一个重要的环节。
数据访问更倾向于处理对数据库的读写,您可以单独创建 Helper 类来处理这些共性,但是您仍然需要编写大量的代码。
事实上,我们可能有这样一种感觉:创建数据访问层很乏味,因为对于 DAL 的不同方法,执行 SQL语句或存储过程的 ADO.NET 代码通常是相同或相似的。
尽管可以使用本书前面的方法自定义ADO.NET 代码编写自己的 DAL ,但是 Visual Studio 还是提供了一种方便的方式,可以根据简单向导的输入生成数据访问层。
这种情况下的数据访问层是强类型 的 DataSet 对象。
DataSet 包含TableAdapter 类型,这些类型公开用于返回强类型 DataTable 对象的方法。
这些方法适合用于直接绑定到 ObjectDataSource ,也适合用于从业务逻辑层组件进行调用。
1 )类型化数据集 VS.NET2005 提供了数据集和数据适配器,使用它们可以大大减少代码的编写,利用 VisualStduio.NET 设计器可以以声明的方式生成强类型化数据集。
这里的数据集也是从 ADO.NETDataSet , DataTable 和 DataRow 派生的类,该类对外界提供了安全的 API 接口。
通过 API 接口使得我们可以很容易访问 DataSet 里的数据与数据模式。
可以通过在 VS.NET2005 里通过简单的拖、放操作来生成这些强类型数据集,利用属性设计器还可以建立数据访问模式。
其实您的这些操作就是生成一个类型化的 XML 模式文件定义( XML SchemaDefinition , XSD )。
改 XSD 文件包含了数据库设计模式结构,系统能够根据该结构来将数据包含在 DataSet 中,换句话说, VS.NET2005 将使用该 XSD 文件来生成一个包含数据集类定义的代码文件。
当你在应用程序里访问数据时,数据将根据数据表的不同被组织为一个个业务逻辑实体,例如Category 实体, Product 实体等(数据适配器表),为了能够使用这些数据,您需要将这些逻辑实体转换为类的对象,所以您可以自己为每一个实体编写一个类对象。
这些实体对象一般会为数据访问提供一些属性和方法,您可以在类里使用这些属性和方法以返回强类型集合 强类型化的数据集为建立和委托自定义类对象提供了方便,从本质上说您建立的类对象是一个类型化的 DataSet ,该 DataSet 包含了业务逻辑实体和一些数据集合,但是主要区别是您在以声明的方式编写模式文件,您可以利用 VS.NET2005 的支持以可视化的方式编辑,删除 XML 数据模式文件,VS.NET 能够感知模式文件的变化并更新代码文件类的成员。
另外,由于强类型化 DataSet 是从 ADO.NET 相关类派生,所以您可以重复利用 ADO.NET 提供的数据操作能够,例如数据绑定,数据分页、排序、过滤等常见的工作。
最后一点,也是最重要的一点当您在 VS.NET2005 建立数据集后,您可以为每一张表获取强类型的数据适配器表,使用该数据适配器您可以极大的减少常规代码大编写。
该数据适配器进一步封装了数据的链接 Connection ,数据的执行 Command ,后面会详细介绍这些内容。
2 ) DataSets 和 Business Objects 的比较 一个常见的讨论是:是否在应用程序里使用 DataSets 。
虽然 DataSets 确实为应用程序代码的编写提供了方便,但是由于它封装了许多实现细节,因为在理解性和可控性方面都具有一定的局限性。
在这方面自定义 Business Objects 具有可度性强,理解简单的有点。
但是正如前述, DataSets 可以减类似代码的重复编写。
事实上,对于 Web 而言,数据的读取原比数据的写入占有重要的比例,所以在这简单的数据读取方面, DataSets 将比 Business Objects 更具有优势。
2.4.2 建立数据集与数据适配器 本书在第一章曾介绍如何利用 VS.NET2005 建立数据库,本节继续使用 Database 数据库来说明数据集和数据适配器的使用。
在“ Server Explorer ”视图里,您可以看到 Database 数据库里已经有了 Categories 和 products 两张表,如图 2-42 。
图 2-42 Database 数据库1) 使用 DataSet 设计器 接下来我们将建立 Database 的业务逻辑层, “解决方案资源管理器” 在 里单击鼠标右键选择 Add “New Item... ”,选择“ DataSet ”并将它命名 Database.xsd 如图 2-43 。
在 VS.NET 里建立的 DataSet 将采用默认的文件命名方式。
例如此处建立的文件名为Database.xsd ,则系统以后建立的 DataSet 派生类就命名为 Database 。
相反,如果您此处建立的 DataSet 命名为 MyDAL ,则以后建立的 DataSet 派生类就命名为 MyDAL 类。
接下来会弹出一个对话框,询问你是否将该文件添加到 App_Code 目录下,我们选择“ Yes ”以便后面代码共享。
注意: App_Code 文件夹除了类文件 .cs 外, .XSDWeb Service 等也都可以共享 此后,系统将在 App_Code 目录下建立 Database.xsd 文件并启动“ TableAdapterConfiguration Wizard ”向导如图 2-44图 2-44 TableAdapter Configuration Wizard ”向导2) 建立第一个数据适配器 在图 2-44 里,单击 Next ,系统会询问你是否使用 DatabaseConnectionString 作为连接字符串并保存在 web.config 里,选中“ Yes ”复选框如 引入下一步,选择 SQL 语句的命令类型,可以是 SQL 语句,也可以新建存储过程或者是已经存在的存储过程。
在这里我们使用第一项“ Use SQL statements ”,如图 2-26 。
图 2-46 使用 SQL 语句 在下一步里,我们使用“ Query Builder ”来建立 SQL 语句,如图 2-47 ,你可以单击“ Execute Query ”来查看该 SQL 语句执行的结果。
图 2-47 Query Builder 查询器当返回后将自生成如下的 SQL 语句,参考图 2-48 。
SELECT ProductID ProductName CategoryID Price InStore DescriptionFROM Products 图 2-48 生成 SQL 语句 在图 2-48 里还有一个“ Advanced Options... ”(高级选项),单击后将弹出高级选项对话框,如图 2-49图 2-49 高级对话框 在高级选项里,默认是选中“ Generate Insert , Update And Delete statements ”的,所以系统会根据 Select 语句自动生成相应的插入、更新和删除语句,而“ Use optimistic concurrency ”(冲突检测)和 Refresh the data table (刷新表格数据)是不选中的。
单击 Next ,将进入“ Choose Methods to Generate ”页面,在该页面系统会让我们命名在业务逻辑处理中的方法名称,这里有两类方法模式: Fill 类: DataSet 将使用 Fill 类生成一个以 DataSet 或者 DataTable 作为参数的方法,该方法将使用前面生成的 SQL 语句来填充数据集。
Get 类:该类方法用来获取前面 SQL 语句或者存储过程执行的返回结果值。
图 2-50 显示了我的设定,其中 Fill 类使用的是 Fill 方法,而 Get 类命名的方法是GetAllProducts 。
另外我还选中了下面的 GenerateDBDirectMethods ,这样系统将自动根据我前面的 Insert 、Update 和 Delete 语句生成相应的方法。
单击“ Next ”会显示系统自动生成的结果,如果成功了,可以单击 Finish 之间完成该向导。
当关闭向导后,系统会自动打开 VS.NET 的设计器,在该设计器里可以看到类视图如图 2-51 。
图 2-51 向导生成结果图 在图 2-51 上单击鼠标右键,选择“ View Code “,我们可以查看系统自动生成的 XSD 源代码,下面我们看看系统都生成了哪些代码 1、 使用 Connection 标识数据库连接 在前面向导里数据库的连接配置是通过 Connections 的 Connection 表示的,这种配置会映射在 XSD 文档里,如代码 2-21 。
正如您所看到的,数据库链接还包括了 Name 、 Provider 等属 性,它们都用于以后数据库的连接。
ltConnectionsgt ltConnection AppSettingsObjectNamequotWeb.configquot AppSettingsPropertyNamequotDatabaseConnectionStringquot ConnectionStringObjectquotquot IsAppSettingsPropertyquotTruequot ModifierquotAssemblyquot NamequotDatabaseConnectionString Web.configquot ParameterPrefixquotquot PropertyReferencequotAppConfig.System.Configuration.ConfigurationManager.0.ConnectionStrings.DatabaseConnectionString.ConnectionStringquot ProviderquotSystem.Data.SqlClientquotgt lt/Connectiongt lt/Connectionsgt 代码 2-21 Database.xsd 代码片段( 1 )2 、数据的执行用 XXXCommand 表示这里是偶的解释,可以跳过 在前面的 SQL 语句向导里,由于要求系统根据 Select 语句自动生成 Delete 、 Update 和Insert 语句以及方法,所以系统将使用 ltSelectCommandgt 、 ltDeleteCommandgt 、ltUpdateCommandgt 和 ltInsertCommandgt 来表示这些方法,并建立这些方法所需要的参数,如2-22 。
ltDbSource ConnectionRefquotDatabaseConnectionString Web.configquot DbObjectNamequotdbo.Productsquot DbObjectTypequotTablequot FillMethodModifierquotPublicquot FillMethodNamequotFillquot GenerateMethodsquotBothquot GenerateShortCommandsquotTruequot GeneratorGetMethodNamequotGetAllProductsquot GeneratorSourceNamequotFillquot GetMethodModifierquotPublicquot GetMethodNamequotGetAllProductsquot QueryTypequotRowsetquot ScalarCallRetvalquotSystem.Object mscorlib Version2.0.0.0 CultureneutralPublicKeyTokenb77a5c561934e089quot UseOptimisticConcurrencyquotFalsequot UserGetMethodNamequotGetAllProductsquot UserSourceNamequotFillquotgt ltDeleteCommandgt ltDbCommand CommandTypequotTextquot ModifiedByUserquotFalsequotgt ltCommandTextgtDELETE FROM Products WHERE ProductID Original_ProductIDlt/CommandTextgt ltParametersgt ltParameter AllowDbNullquotFalsequot AutogeneratedNamequotquot DataSourceNamequotquotDbTypequotInt32quot DirectionquotInputquot ParameterNamequotOriginal_ProductIDquot Precisionquot0quotProviderTypequotIntquot Scalequot0quot Sizequot0quot SourceColumnquotProductIDquotSourceColumnNullMappingquotFalsequot SourceVersionquotOriginalquotgt lt/Parametergt lt/Parametersgt lt/DbCommandgt lt/DeleteCommandgt ltInsertCommandgt ltDbCommand CommandTypequotTextquot ModifiedByUserquotFalsequotgt ltCommandTextgtINSERT INTO Products ProductName CategoryID PriceInStore Description VALUES ProductName CategoryID Price InStoreDescriptionlt/CommandTextgt ltParametersgt ltParameter AllowDbNullquotTruequot AutogeneratedNamequotquot DataSourceNamequotquotDbTypequotStringquot DirectionquotInputquot ParameterNamequotProductNamequot Precisionquot0quot.
上一篇:
WebGuard应用保护系统培训资料
下一篇:
猪疥癣病的防治