C#连接数据库

news/2024/6/1 22:29:40 标签: c#, 数据库, sqlserver, sql server, windows, string

对于不同的.NET数据提供者,ADO.NET采用不同的Connection对象连接数据库。这些Connection对象为我们屏蔽了具体的实现细节,并提供了一种统一的实现方法。

Connection类有四种:SqlConnection,OleDbConnection,OdbcConnection和OracleConnection。

SqlConnection类的对象连接SQL Server数据库;OracleConnection 类的对象连接Oracle数据库;OleDbConnection类的对象连接支持OLE DB的数据库,如Access;而OdbcConnection类的对象连接任何支持ODBC的数据库。与数据库的所有通讯最终都是通过Connection对象来完成的。
 (1)用SqlConnection连接SQL Server

加入命名空间:using System.Data.SqlClient;

连接数据库string conString = "data source=IP地址; Database=数据库名;user id=用户名; password=密码";

                          SqlConnection myconnection = new SqlConnection(conString);

                          myconnection.open();

(2)用OracleConnection连接Oracle

加入命名空间:using System.Data.OracleClient;

连接数据库string conString = "data source=IP地址; Database=数据库名;user id=用户名; password=密码";

                          OracleConnection myconnection = new OracleConnection(conString);

                          myconnection.open();

(3)用 MySqlConnection连接MySQL

在.NET中连接MySQL数据库有两种方法:MySQL Connector/ODBC 和 MySQL Connector/NET,ODBC连接器是符合ODBC标准的交互平台,是.NET访问MySQL数据库最好的选择。

首先,需要下载安装MySql-connector-net-5.1.5.Data.msi这个组件。如果是默认安装,则可以在C:\Program Files\MySQL\MySQL Connector Net 5.1.5\Binaries\.NET2.0中找到MySql.Data.dll,将该文件复制到项目的bin目录下。并且在项目中添加引用MySql.Data.dll。实现代码如下:

加入命名空间:using MySql.Data.MySqlClient;

连接数据库string conString = "server=IP地址; Database=数据库名;user id=用户名; password=密码";

                          MySqlConnection myconnection = new MySqlConnection(conString);

                          myconnection.open();

(4)用OleDbConnection连接各种数据源

由于数据源不同,相应的连接字符串也会不同。

加入命名空间:using System.Data.OleDb;

连接 SQL Server:  string conString = "Provider=SQLOLEDB.1; Persist Security Info=False; user id=用户名; Database=数据库名; data source=COMPUTER; ";

                                    OleDbConnection myconnection = new OleDbConnection(conString);

                                    myconnection.open();

连接 Access:  string conString = "Provider=Microsoft.Jet.OLEDB.4.0;  data source=C:\\Database1.mdb; Persist Security Info=False;";

                                    OleDbConnection myconnection = new OleDbConnection(conString);

                                    myconnection.open();

(也可以通过建立.udl文件来获得字符串)

连接 Oracle:  string conString = "Provider=MSDAORA;  user id=用户名; password=密码; data source=db; Persist Security Info=False;";

                                    OleDbConnection myconnection = new OleDbConnection(conString);

                                    myconnection.open();

(也可以通过OracleConnection连接)

注意:使用不同的Connection对象需要导入不同的命名空间。OleDbConnection的命名空间为System.Data.OleDb。SqlConnection的命名空间为System.Data.SqlClient。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。       

view plain copy to clipboard print ?
  1.  string constr = string">"server=.;database=myschool;integrated security=SSPI";  
  2.  //string constr = "server=.;database=myschool;uid=sa;pwd=sa";   
  3.  //string constr = "data source=.;initial catalog=myschool;user id=sa;pwd=sa";   
  4.  SqlConnection con = new SqlConnection(constr);  
  5. // con.ConnectionString = constr;   
  6.  string sql = string">"select count(*) from grade";  
  7.  SqlCommand com = new SqlCommand(sql,con);  
  8.  try  
  9.  {  
  10.      con.Open();  
  11.      MessageBox.Show(string">"成功连接数据库");  
  12.      int x = (int)com.ExecuteScalar();  
  13.      MessageBox.Show(string.Format(string">"成功读取{0},条记录", x));  
  14.  }  
  15.  catch (Exception)  
  16.  {  
  17.   
  18.      throw;  
  19.  }  
  20.  finally  
  21.  {  
  22.      con.Close();  
  23.      MessageBox.Show(string">"成功关闭数据库连接"string">"提示信息", MessageBoxButtons.YesNoCancel);  
  24.  }  


5、Web.config 配置

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

view plain copy to clipboard print ?
  1. <?xml version=string">"1.0"?>  
  2. <configuration>  
  3. <connectionStrings>  
  4. <add name=string">"myschool" connectionString=string">"Server=localhost;Integrated Security=True;Database=myschool;Persist Security Info=True" providerName=string">"System.Data.SqlClient" />  
  5. </connectionStrings>  
  6. <system.web>  
  7. <pages styleSheetTheme=string">"Default"/>  
  8. </system.web>  
  9. </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验证的数据库联接字符串是不同的。


http://www.niftyadmin.cn/n/1577023.html

相关文章

【转】COM技术内幕(笔记)

COM技术内幕&#xff08;笔记&#xff09; COM——到底是什么&#xff1f;——COM标准的要点介绍&#xff0c;它被设计用来解决什么问题&#xff1f;基本元素的定义——COM术语以及这些术语的含义。使用和处理COM对象——如何创建、使用和销毁COM对象。基本接口——描述IUnknow…

.NET程序员,你属于哪个级别

第一阶段&#xff1a;未入门的程序员 1 什么是编程? 2 编程能干什么? 3 什么是编程语言? 4 我想做个网页&#xff0c;怎么做? 5 我想做个XX程序&#xff0c;怎么做? 6 我想学编程&#xff0c;怎么学? 第二阶段&#xff1a;入门后的程序员 1 数据库基础懂了 2 C#\…

什么是ComponentArt?

今天看到ComponentArt&#xff0c;和大家分享一下 关于ComponentArt的介绍 中文名: ComponentArt英文名: ComponentArt别名: 2007_1_1556&#xff0c;包含源代码资源格式: 光盘镜像版本: 2007_1_1556&#xff0c;包含源代码发行时间: 2007年制作发行: ComponentArt地区: 美国,加…

良品铺子如何攻破“双11”最后一公里?

中国互联网有着神奇的现象级魔力&#xff0c;这种魔力除了会引发一定程度的产业变革之外&#xff0c;还会带来一定概率的蝴蝶效应。除此之外&#xff0c;这种魔力在当前的互联网产业领域里创造的价值正日趋体现&#xff0c;尤其是在日前刚刚结束的双11购物庆典节日中&#xff0…

.NET开发人员会遇到的瓶颈还有职业发展

.NET程序员今后该如何发展&#xff0c;我们会遇到什么样的瓶颈&#xff1f;很多.NET程序员个各种纠结,想拿高薪又拿不到,想提高又不知道怎么能提高。现在社会比前几年浮躁了,越来越多的人抱怨薪水低,高薪工作不好找;诚然这有CPI的压力,可是也有很多人没有认清自己的职业发展.很…

[转]gulp构建前端工程

摘要: Gulp 是一个自动化工具&#xff0c;前端开发者可以使用它来处理常见任务&#xff1a; 搭建web服务器 文件保存时自动重载浏览器 使用预处理器如Sass、LESS 优化资源&#xff0c;比如压缩CSS、JavaScript、压缩图片 当然Gulp能做的远不止这些。如果你够疯狂&#xff0c;你…

程序员必备:几个国外IT网站

【IT168 应用】最近有些读者给我来信说很喜欢这个网站上的文章&#xff0c;并且也想通过翻译学习英文&#xff0c;他们询问我这些文章的英文原文是从哪里找到的? 外刊IT评论上的翻译的英文来源很杂&#xff0c;我总结了一下&#xff0c;大概有几个 集中的出处&#xff0c;下面…

服装店老板娘都会的高级营销策略

每一个好的商场除了自身规模品牌外&#xff0c;还有一些吸引用户掏钱购买的驱动力&#xff0c;在离开工作岗位的这段时间里&#xff0c;时间就像生锈的罗盘&#xff0c;枯燥而无味&#xff0c;除了白天在奔波与新房的装修外&#xff0c;偶尔也会体会一下县城里美丽的夜景&#…