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

本文转载自忙碌的布谷鸟 

如何使用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 [email protected]"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;

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

时间: 2024-12-29 01:43:31

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

连接SQL Server 数据库的三种方式

涉及到配置文件的连接方法: 方式一: 在配置文件中: <configuration> <appSettings> <add key="ConnectionString" value="Data Source=服务器的名称;Initial Catalog=要连接的数据库的名称;User ID=数据库登录名;Password=数据库登录密 码"/> </appSettings> <configuration>

Rails 连接多个数据库的两种方式

有些时候,我的项目可以需要连接多个数据库,这时应该怎么办?我查阅了资料,大部分都是说在model里加入establish_connection来指向不同的数据库,也有的说做个基础的类,每个model继承此类,这些说法都没有错,但不够精练,我在此做个总结. 这里使用的是mysql和rails4.2 一.每个model各自连接 修改database.yml如下: default: &default  adapter: mysql2  encoding: utf8  pool: 5  host: lo

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

SQL Server数据库的三种恢复模式:简单恢复模式.完整恢复模式和大容量日志恢复模式 这篇文章主要介绍了SQL Server数据库的三种恢复模式:简单恢复模式.完整恢复模式和大容量日志恢复模式,需要的朋友可以参考下 如何图形界面下修改恢复模式 找到你想修改的数据库 右键 > 属性  > 左侧 选项既可看到 1.Simple 简单恢复模式, Simple模式的旧称叫"Checkpoint with truncate log",其实这个名字更形象,在Simple模式下,SQ

连接sql sever2008数据库出现了无法连接到数据库引擎问题解决

出现的问题: 在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误.未找到或无法访问服务器.请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接. (provider: 命名管道提供程序, error: 40 - 无法打开到 SQL Server 的连接) (Microsoft SQL Server,错误: 2) 原因: MSSQLSERVER(微软数据库服务器)还没打开,所以进入不了,因此出现了未找到或无法访问服务器,解决就是打开微软服务器 解决方案: 开

ArcSDE:C#打开SDE数据库的几种方式总结

转自原文 ArcSDE:C#打开SDE数据库的几种方式总结 1.通过指定连接属性参数打开数据库 [csharp] view plain copy print? /// <param name="server">数据库服务器名</param> /// <param name="instance">SDE的端口,默认安装时"port:5151"</param> /// <param name=&q

C#打开SDE数据库的几种方式总结

转自谢灿软件原文 C#打开SDE数据库的几种方式总结 1.通过指定连接属性参数打开数据库 /// <param name="server">数据库服务器名</param> /// <param name="instance">SDE的端口,默认安装时"port:5151"</param> /// <param name="user">SDE的用户名</param

Asp.net 访问数据库的几种方式

ASP.NET中连接数据库的各种方法 连接SQL数据库的方法:(一).在Web.Config中创建连接字符串:1.<add name="ConnectionString" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\grade.mdf;Integrated Security=True;User Instance=True" providerName=&q

Android开发之使用sqlite3工具操作数据库的两种方式

使用 sqlite3 工具操作数据库的两种方式 请尊重他人的劳动成果,转载请注明出处:Android开发之使用sqlite3工具操作数据库的两种方式 http://blog.csdn.net/fengyuzhengfan/article/details/40193123 在Android SDK的tools目录下提供了一"sqlite3.exe工具,它是一个简单的SQLite数据库管理工具,类似于MySQL提供的命令行窗口在有些时候,开发者利用该工具来査询. 管理数据库. 下面介绍两种方式: 第

联接HIVE SERVER客户端的三种方式

在Hive/bin 目录下输入./hive --service hiveserver 代表hive启动了服务器模式. 和普通模式不同的是,这时hive同时启动了一个名为thrift的服务器. 你不用去研究这个服务器的原理,认为他是一个传递信息的人就好,你可以通过他向hive发送命令,然后hive再把命令送给hadoop. 1.命令行模式: ./hive -h127.0.0.1 -p10000 简单明了,IP和端口. 2.JDBC模式: 名字很糊人的.     private static Str