本文转载自忙碌的布谷鸟 

如何使用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 = "server=.;database=myschool;integrated security=SSPI";

说明:程序代码中,设置了一个针对Sql Server数据库的连接字符串。其中server表示运行Sql Server的计算机名,由于程序和数据库系统是位于同一台计算机的,所以我们可以用.(或localhost)取代当前的计算机名。database表示所使用的数据库名(myschool)。由于我们希望采用集成的Windows验证方式,所以设置 integrated security为SSPI即可。

2、Sql Server 2005中的Windows身份验证模式如下:

string constr = "server=.;database=myschool;uid=sa;pwd=sa";

说明:程序代码中,采用了使用已知的用户名和密码验证进行数据库的登录。数据库连接字符串是不区分大小写的。uid为指定的数据库用户名,pwd为指定的用户口令。为了安全起见,一般不要在代码中包括用户名和口令,你可以采用前面的集成的Windows验证方式或者对Web.Config文件中的连接字符串加密的方式提高程序的安全性。

3、Sql Server 2005中的Sql Server身份验证模式如下:

string constr = "data source=.;initial catalog=myschool;user id=sa;pwd=sa";

说明:程序代码中data source 表示运行数据库对应的计算机名,initial catalog表示所使用的数据库名。uid为指定的数据库用户名,pwd为指定的用户口令。

4、Access数据库的连接字符串的形式如下:

string connectionString =@"provider=Microsoft.Jet.OLEDB.4.0;data source=c:\DataSource\myschool.mdb";

说明:程序代码中,通过专门针对Access数据库的OLE DB提供程序,实现数据库的连接。这使用的的OLE DB提供程序为Microsoft.Jet.OLEDB.4.0,并且数据库存放在c:\DataSource目录下,其数据库文件为myschool.mdb。

[csharp] view plaincopy
  1.  string constr = "server=.;database=myschool;integrated security=SSPI";  //string constr = "server=.;database=myschool;uid=sa;pwd=sa";  //string constr = "data source=.;initial catalog=myschool;user id=sa;pwd=sa";  SqlConnection con = new SqlConnection(constr);
    // con.ConnectionString = constr;  string sql = "select count(*) from grade";  SqlCommand com = new SqlCommand(sql,con);  try  {  con.Open();  MessageBox.Show("成功连接数据库");  int x = (int)com.ExecuteScalar();  MessageBox.Show(string.Format("成功读取{0},条记录", x));  }  catch (Exception)  {  throw;  }  finally  {  con.Close();  MessageBox.Show("成功关闭数据库连接", "提示信息", MessageBoxButtons.YesNoCancel);  }  

5、Web.config 配置

在ASP.NET 2.0中,使用了一种在运行时解析为连接字符串值的新的声明性表达式语法,按名称引用数据库连接字符串。连接字符串本身存储在 Web.config 文件中的 <connectionStrings>配置节下面,以便易于在单个位置为应用程序中的所有页进行维护。

[csharp] view plaincopy
  1. <?xml version="1.0"?>
    <configuration>
    <connectionStrings>
    <add name="myschool" connectionString="Server=localhost;Integrated Security=True;Database=myschool;Persist Security Info=True" providerName="System.Data.SqlClient" />
    </connectionStrings>
    <system.web>
    <pages styleSheetTheme="Default"/>
    </system.web>
    </configuration> 

我们也可以用下面的方式从配置文件直接读取数据库连接字符串。首先我们需要引用using System.Web.Configuration命名空间,该命名空间包含用于设置 ASP.NET 配置的类。

string connectionString =ConfigurationManager.ConnectionStrings["myschool"].ConnectionString;

或者在appSettings节点里添加

<?xml version="1.0" encoding="utf-8"?><configuration>
<appSettings><add key="myschool" value="Data Source=.;Initial Catalog=OneBaker2014;User ID=sa;Password=123;"/><add key="webpages:Version" value="2.0.0.0" /><add key="webpages:Enabled" value="false" /><add key="PreserveLoginUrl" value="true" /><add key="ClientValidationEnabled" value="true" /><add key="UnobtrusiveJavaScriptEnabled" value="true" /></appSettings>
</configuration>

此时获取获取数据库连接字符串的方式为:string ConnectString = ConfigurationManager.AppSettings["myschool"];

首先你应该区分Windows验证与Sql自身的验证的区别。  
  Windows验证就是SqlServer服务器使用Windows自带的验证系统,如果你指定SqlServer内Windows的一个组有访问的权限,那么加入此组的Windows用户都有访问数据库的权限。此验证有个缺点,就是如果不是在域模式下,无法加入远程计算机的用户,所以如果使用C/S方式写程序的话,使用Windows验证无法使本地计算机的Windows帐户访问远程数据库服务器。  
   
  Sql验证就简单多了,就是使用sqlserver的企业管理器中自己定义由Sql控制的用户,指定用户权限等。这个帐户信息是由SqlServer自己维护的,所以SqlServer更换计算机后信息不会丢失,不用重新设定。  
   
  所以如果你的项目使用在一个比较大的网络中,而且对安全要求比较高,那么应该建立域,使用Windows验证,而且要与系统管理员配合详细设定可以访问SqlServer的Windows帐户。如果使用一个小网络,而且此网络仅用来使用项目,对安全没有高要求,那么使用SqlServer验证,而且更新,升级等都方便。  
   
  Windows验证与SqlServer验证的数据库联接字符串是不同的。

C# 连接SQL Server数据库的几种方式--server+data source等方式相关推荐

  1. 连接sql server数据库的两种方式

    class DB     { private static SqlConnection conn; public static SqlConnection getConn() { //conn = n ...

  2. java连接sql数据库代码_Java如何连接Sql的数据库

    Java如何连接Sql的数据库 Java连接数据库,除了用Jdbc-Odbc桥接外,还有更实用的方法么?我是指不用配置DSN,直接和Sql连接的那种,需要安装什么驱动么?--------------- ...

  3. asp教程连接sql server数据库教程二种方法

    asp教程连接sql server数据库教程二种方法  ,sql server ole db连接方法:,本人链接sql2012已经成功,想可以帮助大家 本教程主要是讲了asp与mssql server ...

  4. SQL Server数据库的三种恢复模式:简单恢复模式、完整恢复模式和大容量日志恢复模式...

    SQL Server数据库的三种恢复模式:简单恢复模式.完整恢复模式和大容量日志恢复模式 这篇文章主要介绍了SQL Server数据库的三种恢复模式:简单恢复模式.完整恢复模式和大容量日志恢复模式,需 ...

  5. SQL Server数据库的三种恢复模式

    SQL Server数据库的三种恢复模式:简单恢复模式.完整恢复模式和大容量日志恢复模式. sql server数据库提供了三种恢复模式:完整,简单和大容量日志,这些模式决定了sql server如何 ...

  6. SQL Server数据库的三种恢复模式:简单恢复模式、完整恢复模式和大容量日志恢复模式

    这篇文章主要介绍了SQL Server数据库的三种恢复模式:简单恢复模式.完整恢复模式和大容量日志恢复模式,需要的朋友可以参考下 如何图形界面下修改恢复模式 找到你想修改的数据库 右键 > 属性 ...

  7. java sqlserver2000_用Java连接SQL Server2000数据库

    用Java连接SQL Server2000数据库有多种方法,下面介绍其中最常用的两种(通过JDBC驱动连接数据库).以及连接池.[@more@] 用Java连接SQL Server2000数据库有多种 ...

  8. 用什么方式链接oracle数据库,使用cx_Oracle 连接oracle数据库的几种方式

    连接oracle数据库的几种方式: 语法: cx_Oracle.connect('username','pwd','IP/HOSTNAME:PORT/TNSNAME') import cx_Oracl ...

  9. php连接mysql_PHP连接MySQL数据库的三种方式

    本篇文章给大家介绍一下PHP连接MySQL数据库的三种方式(mysql.mysqli.pdo),结合实例形式分析了PHP基于mysql.mysqli.pdo三种方式连接MySQL数据库的相关操作技巧与 ...

最新文章

  1. cygwin nginx php mysql_Windows 下 Nginx + PHP5 的安装与配置
  2. [转] Windows Server 2012 Beta Cluster (Hyper-V 3.0)-SMB篇
  3. 架构-浅谈MySQL数据库优化
  4. redis命令大全参考手册
  5. linux下apache无法访问localhost,CentOS 6.8安装httpd后无法访问
  6. java的标识符可以以数字开头_标识符可以以数字开头,但不能是Java中的关键字...
  7. so文件动态加载注意事项
  8. Microsoft Deployment Toolkit 2010 新功能实战之三
  9. Scheme学习系列O:启动篇
  10. webstorm设置注释颜色_PDF中的注释怎么用?这里有方法
  11. 测试心得--快易需求文档编辑系统
  12. 多线程下载视频,并运用Fmmpeg合成
  13. Python算法教程第三章知识点:求和式、递归式、侏儒排序法和并归排序法
  14. 数智化未来5大趋势——CDEC2020中国数字智能生态大会上海站生态伙伴发展状况调查...
  15. Type-c快充加音频芯片深度解析(LDR6023C)
  16. Flow-3D二次开发入门 教程
  17. mdp框架_SIGIR 2020 | 知识图谱上推荐推理的模仿学习框架
  18. UVa1471 Defense Lines(LIS变形)
  19. 历尽千帆,归来仍少年
  20. Unity2DRelative Joint 2D详解

热门文章

  1. 【emWin】例程十五:触摸校准实例——五点校准法
  2. Reveal v4(8796) 使用
  3. nhibernate连接11g数据库
  4. 带UpdatePanel页面返回js问题
  5. 同一个类里方法互相调用注解失效问题
  6. Hbase单点安装Version1.1.5
  7. 分组函数group by和Oracle中分析函数partition by的用法以及区别
  8. SpringBoot项目部分文件解析、数据库连接(idea)
  9. 微信小程序引入npm
  10. ORACLE不完全恢复的几种情况