岁月留声QtAsp

Qt in Linux , Asp Asp.net Jsp Php in Web

« 计算机界的传奇人物:高德纳将存储过程返回的数据集填充到DataSet/DataTable(C#) »

不支持关键字: "Provider"

在利用 SqlConnection 连接数据库时出现“不支持关键字: "Provider"”的错误。

原因分析

SqlConnection 是专门用于连接 SQL Server 的对象,由于是针对特定的数据库,所以并不需要指定 Provider。

连SQL Server不用指明数据提供者

解决办法

将连接字符串中的 Provider 删除即可。

不需要用provider
按下面的格式写就可以了
User ID={0}; Password={1};Initial Catalog={2};Data Source={3}

注意,Sql 和 OleDb有别,可以参考以下文章

.......在编程中并不使用这几个单词作为对象名称,还需要在前面加上 Sql 或 OleDb,加上 Sql 的对象实用于 MS SQL Server 7.0 及以上版本,加上 OleDb 的对象适用于所有数据库(管理系统),使用 Sql 开头的对象操作 MS SQL Server 数据库要比使用 OleDb 开头的对象操作 MS SQL Server 数据库性能优越,所以在数据库使用 MS SQL Server 时,应该使用 Sql 开头的对象,否则微软也不会单独开发出一系列针对 MS SQL Server 的对象了。

使用 Sql 开头的对象,名称空间是:

System.Data.SqlClient
使用 OleDb 开头的对象,名称空间是:

System.Data.OleDb
SqlConnection 和 OleDbConnection

Connection 对象用于建立和数据库的连接。对于 SqlConnection 不需要指明 provider,因为其驱动是固定的,而对于 OleDbConnection 则需要指明 provider 用以说明需要什么数据库驱动。

SqlConnection conn = new SqlConnection("server=(local);User ID=foo;Password=foo;Initial Catalog=foo");
SqlCommand 和 OleDbCommand

Command 对象用于对数据库进行操作。

SqlCommand cmd = new SqlCommand("select * from tbl", conn); //conn 为 SqlConnection 对象
SqlDataReader 和 OleDbDataReader

DataReader 对象读取数据库中的数据,它从数据库返回一个只读的、仅向前的数据流,当前内存中每次仅存在一条记录,所以它相对 ADO 的 RecordSet 性能非常优越。SqlDataReader 和 OleDbDataReader 的属性和方法还是有一定区别的,因为面向的数据库字段类型不同。

SqlDataReader dr = cmd.ExecuteReader(); //cmd 为 SqlCommand 对象
SqlDataAdapter 和 OleDbDataAdapter

DataAdapter 对象建立、初始化 DataTable,从而和 DataSet 对象结合起来在内存中存放数据,DataAdapter 对象能隐藏和 Connection、Command 对象沟通的细节,所以在使用 DataAdapter 时不需要指明 conn.Open(conn 为 Connection 对象),而使用 Command 和 DataReader 则需要指明 conn.Open

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/l8487/archive/2008/03/11/2170843.aspx

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

日历

Search

  •  

最新评论及回复

最近发表

Powered By Z-Blog 1.8 Spirit Build 80722 Code detection by Codefense

Copyright 2008-2011 京公网安备 110115000655 京ICP备09005635号 www.qtasp.cn WebSite. All Rights Reserved.