不好意思啊,刚开始学asp.net(C#)。
以前用过ASP,我知道ASP里要做SQL和ACCESS数据库都通用的程序很简单,只要一开始在conn.asp里设置一个常量申明是什么类型的数据库。然后下面的连接字符串都可以用IF判断来分别使用SQL和ACCESS的连接字符串。然后在其他页面里,都不需要再判断了,只要调用数据库打开函数就行了。而现在ASP.net里是在web.config里配置,这个没办法用IF判断了,那该怎么办呢?难道以后每个页面都必须先判断是什么数据库,再调用不同的数据库连接字符串了?
以前用过ASP,我知道ASP里要做SQL和ACCESS数据库都通用的程序很简单,只要一开始在conn.asp里设置一个常量申明是什么类型的数据库。然后下面的连接字符串都可以用IF判断来分别使用SQL和ACCESS的连接字符串。然后在其他页面里,都不需要再判断了,只要调用数据库打开函数就行了。而现在ASP.net里是在web.config里配置,这个没办法用IF判断了,那该怎么办呢?难道以后每个页面都必须先判断是什么数据库,再调用不同的数据库连接字符串了?
解决方案 »
- 购物网站价格安全问题
- 带有[Serializable]的实体类是怎么回事?
- TreeView换行
- 点击一次Button后,如何连续激活本次单击事件
- ★★★★★★★★★★★★★★★★★★这个SQL语句怎么写啊~~~~~~~~~~~
- 有关数据查找的问题
- 菜鸟问题:图片显示问题(快速揭帖)
- ddl.Attributes.Add("onclick","myclick();");这个myclick()能否在服务器运行或者.....
- 在vs.net(c#)项目的公共类中如何用Response对象?在线等!
- 再散分!温暖ing
- 关于2005,基于文件系统建立的网站如何放到localhost下.
- VS2005中文的问题,呈现会框,无法选择.
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)
OleDbCommand、OleDbDataAdapter 可以适用于SQL Server数据库吗?
然后每种数据库作一个实现,
利用工厂类将需要的实现返回。//接口
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 );
}
}
{ #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
======================================