不好意思啊,刚开始学asp.net(C#)。
以前用过ASP,我知道ASP里要做SQL和ACCESS数据库都通用的程序很简单,只要一开始在conn.asp里设置一个常量申明是什么类型的数据库。然后下面的连接字符串都可以用IF判断来分别使用SQL和ACCESS的连接字符串。然后在其他页面里,都不需要再判断了,只要调用数据库打开函数就行了。而现在ASP.net里是在web.config里配置,这个没办法用IF判断了,那该怎么办呢?难道以后每个页面都必须先判断是什么数据库,再调用不同的数据库连接字符串了?

解决方案 »

  1.   

    在web.config里面设置3个值,2个字符串连接,一个用来决定是用什么类型的数据库
      

  2.   

    是啊,但是web.config里不能用if判断,那就是说在每个页面里每次连接数据库都必须先用if判断数据库类型了,对吗?
      

  3.   

    上次我也想弄一个类似的通用数据库的,好象实现比较麻烦吧 ACCESS和SQL太多地方不同了
        Dim Str As String = ""
                If System.Configuration.ConfigurationSettings.AppSettings("DB") = 0 Then
                    Str = System.Configuration.ConfigurationSettings.AppSettings("access")
                Else
                    Str = System.Configuration.ConfigurationSettings.AppSettings("sql")
                End If
                Dim Conn As New System.Data.SqlClient.SqlConnection(Str)
      

  4.   

    petshop3.0 可以解決你的問題。
      

  5.   

    应该把数据库的操作全部封装才行吧~~就处理连接字符串可以达到目的吗?
    OleDbCommand、OleDbDataAdapter 可以适用于SQL Server数据库吗?
      

  6.   

    工厂模式:将通用数据库操作方法,如执行sql语句,执行存储过程,抽象为接口,
    然后每种数据库作一个实现,
    利用工厂类将需要的实现返回。//接口
    public interface IDB
    {
    int ExecuteSql( string sql );
    }//实现1
    public class SqlServerDB : IDB
    {
    public int  ExecuteSql( string sql );
    {// ...
     
    }
    }//实现2
    public class OleDDB : IDB
    {
    public int  ExecuteSql( string sql );
    {// ...
     
    }
    }//实现3
    public class AccessDB : IDB
    {
    public int  ExecuteSql( string sql );
    {// ...
     
    }
    }//工厂
    public class DBFactory
    {
    static public IDB DB
    {
    return new SqlServerDB() ; //返回需要的接口实现
    }
    }//调用:
    public class User
    {
    public void Add( string account , string name )
    {
      string sql = "insert into user(account,name)values('"+accont+"','"+name+"')";
    DBFactory.DB.ExecuteSql( sql );
    }
    }
      

  7.   

    public sealed  class Data
        {        #region 基本属性
            
            private  string _connectionstring;
            /// <summary>
            /// 数据库连接字段
            /// </summary>
            public  string ConnectionString
            {
                get { return _connectionstring; }
                set { _connectionstring = value; }
            }
          
    #endregion        #region 枚举对象
            private enum baseType
            {
                Access,
                SQLServer,
                Oracle
            }
           
        
        /// <summary>
        /// 建立连接
        /// </summary>
        /// <param name="ConnectionString">连接字符串</param>
        /// <param name="dbtype">数据库类型</param>
        /// <returns></returns>
          private  IDbConnection CreateConnection (string ConnectionString,baseType dbtype)
          {
             IDbConnection cnn;         switch(dbtype)
             {
                 case baseType.Access:
                   cnn = new OleDbConnection
                      (ConnectionString); 
                   break;
               case baseType.SQLServer:
                   cnn = new SqlConnection
                      (ConnectionString); 
                   break;
               case baseType.Oracle:
                   cnn = new OracleConnection
                      (ConnectionString);
                   break;
                default:
                   cnn = new SqlConnection
                      (ConnectionString); 
                   break;               
             }         return cnn;
          }
            /// <summary>
            /// 建立Command对象
            /// </summary>
           /// <param name="CommandText">Command语句</param>
            /// <param name="ConnectionString">连接字符串</param>
            /// <param name="dbtype">数据库类型</param>
            /// <returns></returns>
            private IDbCommand CreateCommand(string CommandText, baseType dbtype,IDbConnection cnn)
            {
                IDbCommand cmd;
                
                switch (dbtype)
                {
                    case baseType.Access:
                        cmd = new OleDbCommand
                           (CommandText,
                           (OleDbConnection)cnn);
                        break;                case baseType.SQLServer:
                        cmd = new SqlCommand
                           (CommandText,
                           (SqlConnection)cnn);
                        break;                case baseType.Oracle:
                        cmd = new OracleCommand
                           (CommandText,
                           (OracleConnection)cnn);
                        break;
                    default:
                        cmd = new SqlCommand
                           (CommandText,
                           (SqlConnection)cnn);
                        break;
                }            return cmd;        }
            #endregion        #region 数据连接         /// <summary>
            /// 建立Command对象
            /// </summary>
            /// <param name="commandtext">执行的Command语句</param>
            /// <returns>Command对象</returns>
            private IDbCommand CreateCommand(string commandtext)
            {
                IDbCommand comm;
                comm.CommandType = CommandType.Text;
                comm.CommandText = commandtext;
                comm.Connection.ConnectionString = this.ConnectionString;
                comm.Connection.Open();
                return comm;
            }
    电脑还是那台电脑,就是人不是以前的人了.........==========CSDN 小助手 回复============
    =====下载:http://szlawbook.com/csdnv2
    ======================================