asp.net里如何做到简单更换数据库?

yilrwy 2007-11-15 11:53:31
如果我们用access数据库,连接是这样定义的OleDbConnection,如果连接SQL Server就得用SqlDbConnection,请问有什么办法可以使更换数据库的时候,只要改动极少的代码,而不需要把所有的OleDbConnection都改成SqlDbConnection?
...全文
112 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
etuchang 2007-11-16
  • 打赏
  • 举报
回复
应该是工厂模式把
etuchang 2007-11-16
  • 打赏
  • 举报
回复
using System.Configuration;
using System.Data.Common;
using System.Data.SqlClient;
...
DbConnection conn = null;
ConnectionStringSettings s = ConfigurationSettings.ConnectionStrings["ConnectionStrings"];

DbProviderFactory factory = DbProviderFactories.GetFactory(s.ProviderName);

if ((factory.SupportedClasses & DbProviderSupportedClasses.DbConnection) > 0)
{
conn = factory.CreateConnection();
conn.ConnectionString = s.ConnectionString;
}

DbCommand selectCommand = null;
if ((factory.SupportedClasses & DbProviderSupportedClasses.DbCommand) > 0)
{
selectCommand = factory.CreateCommand();
selectCommand.CommandText = "SELECT * from dbo.Customers";
selectCommand.Connection = conn;
}

conn.Open();

DbDataReader dataReader = selectCommand.ExecuteReader();

while (dataReader.Read())
Console.WriteLine(sqlDataReader.GetString(0));

conn.Close();
yujia4616 2007-11-16
  • 打赏
  • 举报
回复
建议去分析一下微软的petshop
etuchang 2007-11-15
  • 打赏
  • 举报
回复
写一个类

using System.Data.Common;



DbConnection
DbCommand
ljleager 2007-11-15
  • 打赏
  • 举报
回复
连接SQL Server不是必须用SqlDbConnection,OLEDbConnection也可以啊
如果要适用多数据库,最好写一个类,专门负责处理与不同数据库的交互
yilrwy 2007-11-15
  • 打赏
  • 举报
回复
写一个类

using System.Data.Common;



DbConnection
DbCommand
--------------------------------------
能不能给出具体的代码?
lextm 2007-11-15
  • 打赏
  • 举报
回复
首先,使用一个支持多种数据库的框架本身非常麻烦。我见过的框架除了现成的OleDB一套,就是CodeGear手里的Borland Data Provider for .NET和DBExpress for .NET——这两个只能在Delphi for .NET里面用。

其次,请在设计时就确定使用什么数据库。一般来说实际的项目需要迁移数据库的可能性几乎是0,所以从来没见过需要在编码时支持多种数据库的。毕竟C#代码支持好了,可是不同的数据库SQL语法又不一样,到头来要改的东西实在是太多了,甚至不如把整个DAL重做来的简单。

111,116

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧