我已经看到很多通过OleDB连接到MS Access的答案,但SQL Server没有很好的答案。我尝试通过我的C#程序中的OleDB提供程序连接到SQL Server数据库。
这是我提供的连接字符串。
Provider=SQLOLEDB;Data Source=<servername>;Initial Catalog=<dbname>;Integrated Security=SSPI
但它给了我错误
'关键字不支持'提供商''
我想在这里做的是通过C#程序中的OleDB连接数据库。
答案 0 :(得分:7)
这在我身边的预期效果。从错误消息中我强烈怀疑您使用的是SqlConnection
类而不是OleDbConnection
(当然您需要使用OleDb提供的所有其他类,如OleDbCommand
,{{1等等......)
OleDbDataReader
答案 1 :(得分:2)
如有疑问,请在visual studio中使用字符串生成器。这样不受支持的关键字就无法进入您的连接字符串,以下是如何使用它的一个很好的例子。
答案 2 :(得分:1)
相同的连接字符串在我的结尾处工作正常。 我发布了我的示例代码,该代码在我的最后成功执行
public string connStr = "Provider=SQLOLEDB;Data Source=.;Initial Catalog=<dbName>;Integrated Security=SSPI";
public OleDbConnection con;
protected void Page_Load(object sender, EventArgs e)
{
Test();
}
public void Test()
{
con = new OleDbConnection(connStr);
con.Open();
OleDbCommand cmd = new OleDbCommand("select * from tblApartments", con);
OleDbDataAdapter da = new OleDbDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds);
con.Close();
}
请放置断点并检查行到行以及断点何时到达con.close();然后检查ds,你可以看到输出。
答案 3 :(得分:0)
考虑到OLE DB提供程序,您正在使用的connection string是正确的。如果要连接到SQL Server数据源,我在所使用的连接字符串中没有发现任何错误。
最有可能的原因是,错误的原因应该是您没有正确使用OLE DB提供程序所需的所有类和对象,例如OleDbCommand
(类似于SqlCommand
但是它有所不同),OleDbConnection
,OleDbDataAdapter
等等。简而言之,错误的原因应该是:
string connStr = "Provider=SQLOLEDB;Data Source=<servername>;Initial Catalog=<dbname>;Integrated Security=SSPI";
using(SqlConnection scn = new SqlConnection(connStr))
{
....
}
实际上,使用SqlConnection
对象时,ConnectionString
属性不支持关键字Provider
,并且在执行应用程序时,您收到有关不支持的关键字的错误。
查看有关使用OLE DB提供程序的this simple tutorial。