C# 连接Access和SQL

vcooldog 2008-09-24 12:47:44
C#应用程序在Access和SQL server间切换能不能通过改配置文件,而不需要改程序内部代码来实现?
如果能的话要怎么写?
...全文
208 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
蓝色木 2008-11-08
  • 打赏
  • 举报
回复
俺也需要
vcooldog 2008-09-27
  • 打赏
  • 举报
回复
谢谢3楼的代码参考
ZengHD 2008-09-24
  • 打赏
  • 举报
回复
工厂模式

277894613 2008-09-24
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 stning 的回复:]
设计模式,抽象工厂能满足你
http://blog.sqlsky.com/article.asp?id=531
[/Quote]
另外在http://www.connectionstrings.com/你可以发现N多数据库的链接方式
不过不同数据库的SQL语法还是有很多区别的,这个也要注意一下
stning 2008-09-24
  • 打赏
  • 举报
回复
设计模式,抽象工厂能满足你
http://blog.sqlsky.com/article.asp?id=531
GhostAdai 2008-09-24
  • 打赏
  • 举报
回复
参考设计模式。
wbpmrck 2008-09-24
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 hongqi162 的回复:]
简单的select/insert/update/delete是没有问题的你只需要修改一下数据库的连接字符串,如果是存储过程就不可以了,access不支持,另外还有一些函数也是不通用的
[/Quote]

这是重点~
天涯海角 2008-09-24
  • 打赏
  • 举报
回复
已阅
格拉 2008-09-24
  • 打赏
  • 举报
回复
MARK
liang4571231 2008-09-24
  • 打赏
  • 举报
回复
顶顶吧
hongqi162 2008-09-24
  • 打赏
  • 举报
回复
简单的select/insert/update/delete是没有问题的你只需要修改一下数据库的连接字符串,如果是存储过程就不可以了,access不支持,另外还有一些函数也是不通用的
BinaryTreeEx 2008-09-24
  • 打赏
  • 举报
回复
简单来说你可以使用ODBC来连接数据库,不同的数据库用不同的连接字符串.连接字符串可以写在配置文件中
heshanxu000 2008-09-24
  • 打赏
  • 举报
回复
学习
cwchyt 2008-09-24
  • 打赏
  • 举报
回复
类似这样的
cwchyt 2008-09-24
  • 打赏
  • 举报
回复

//=========================================CreateAdapter()==============================================
#region 创建数据适配器 CreateAdapter(string sql)
public DbDataAdapter CreateAdapter(string sql)
{
DbParameter[] parameters = new DbParameter[0];
return CreateAdapter(sql, CommandType.Text, parameters);
}
/// 创建数据适配器
public DbDataAdapter CreateAdapter(string sql, CommandType cmdtype)
{
DbParameter[] parameters = new DbParameter[0];
return CreateAdapter(sql, cmdtype, parameters);
}
/**/
/// <summary>
/// 创建数据适配器
/// </summary>
/// <param name="connectionString">数据库连接字符串</param>
/// <param name="sql">SQL语句</param>
/// <param name="cmdtype">命令类型</param>
/// <param name="parameters">参数</param>
/// <returns>数据适配器实例</returns>
public DbDataAdapter CreateAdapter(string sql, CommandType cmdtype, DbParameter[] parameters)
{
DbConnection _connection = CreateConnection();
DbCommand _command = GetDbProviderFactory().CreateCommand();
_command.Connection = _connection;
_command.CommandText = sql;
_command.CommandType = cmdtype;
if (parameters != null && parameters.Length > 0)
{
foreach (DbParameter _param in parameters)
{
_command.Parameters.Add(_param);
}
}
DbDataAdapter da = GetDbProviderFactory().CreateDataAdapter();
da.SelectCommand = _command;

return da;
}

#endregion

//=========================================CreateParameter===================================

#region 生成参数 public override SqlParameter CreateParameter(string field, string dbtype, string value)
/**/
/// <summary>
/// 创建参数
/// </summary>
/// <param name="field">参数字段</param>
/// <param name="dbtype">参数类型</param>
/// <param name="value">参数值</param>
/// <returns></returns>
public DbParameter CreateParameter(string field, string dbtype, string value)
{
DbParameter p = GetDbProviderFactory().CreateParameter();
p.ParameterName = field;
p.Value = value;
return p;
}
#endregion

//======================================================ExecuteCommand()============================================

#region 执行非查询语句,并返回受影响的记录行数 ExecuteCommand(string sql)
/**/
/// <summary>
/// 执行非查询语句,并返回受影响的记录行数
/// </summary>
/// <param name="sql">SQL语句</param>
/// <returns>受影响记录行数</returns>
public int ExecuteCommand(string sql)
{
DbParameter[] parameters = new DbParameter[0];
return ExecuteCommand(sql, CommandType.Text, parameters);
}

/**/
/// <summary>
/// 执行非查询语句,并返回受影响的记录行数
/// </summary>
/// <param name="sql">SQL语句</param>
/// <param name="cmdtype">命令类型</param>
/// <returns>受影响记录行数</returns>
public int ExecuteCommand(string sql, CommandType cmdtype)
{
DbParameter[] parameters = new DbParameter[0];
return ExecuteCommand(sql, CommandType.Text, parameters);
}

/**/
/// <summary>
/// 执行非查询语句,并返回受影响的记录行数
/// </summary>
/// <param name="sql">SQL语句</param>
/// <param name="parameters">参数</param>
/// <returns>受影响记录行数</returns>
public int ExecuteCommand(string sql, DbParameter[] parameters)
{
return ExecuteCommand(sql, CommandType.Text, parameters);
}

/**/
/// <summary>
///批量执行SQL语句
/// </summary>
/// <param name="SqlList">SQL列表</param>
/// <returns></returns>
public bool ExecuteCommand(ArrayList SqlList)
{
DbConnection con = CreateConnection();
con.Open();
bool iserror = false;
string strerror = "";
DbTransaction SqlTran = con.BeginTransaction();
try
{
for (int i = 0; i < SqlList.Count; i++)
{

DbCommand _command = GetDbProviderFactory().CreateCommand();
_command.Connection = con;
_command.CommandText = SqlList[i].ToString();
_command.Transaction = SqlTran;
_command.ExecuteNonQuery();
}

}
catch (Exception ex)
{
iserror = true;
strerror = ex.Message;

}
finally
{

if (iserror)
{
SqlTran.Rollback();
throw new Exception(strerror);
}
else
{
SqlTran.Commit();
}
con.Close();
}
if (iserror)
{
return false;
}
else
{
return true;
}
}

/**/
/// <summary>
/// 执行非查询语句,并返回受影响的记录行数
/// </summary>
/// <param name="sql">SQL语句</param>
/// <param name="cmdtype">命令类型</param>
/// <param name="parameters">参数</param>
/// <returns>受影响记录行数</returns>
public int ExecuteCommand(string sql, CommandType cmdtype, DbParameter[] parameters)
{
int _result = 0;
DbCommand _command = CreateCommand(sql, cmdtype, parameters);
try
{
_command.Connection.Open();
_result = _command.ExecuteNonQuery();
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
finally
{
_command.Connection.Close();
}
return _result;
}


#endregion


}
}

cwchyt 2008-09-24
  • 打赏
  • 举报
回复


namespace DAL
{
public class DataBase
{
private string _confirString = "ConnectionString";
public DataBase()
{
}

/// <param name="configString">web.config 关键字</param>
public DataBase(string configString)
{
ConfigString = configString;
}
/// 属性,设置数据库连接字符串
public string ConfigString
{
get
{
return _confirString;
}
set
{
_confirString = value;
}
}
//==============================================GetProviderName==============================
#region 获得数据库的类型public string GetProviderName(string ConfigString)
/// 返回数据提供者
public string GetProviderName(string ConfigString)
{
ConnectionStringSettingsCollection ConfigStringCollention = ConfigurationManager.ConnectionStrings;
if (ConfigStringCollention == null || ConfigStringCollention.Count <= 0)
{
throw new Exception("web.config 中无连接字符串!");
}
ConnectionStringSettings StringSettings = null;
if (ConfigString == string.Empty)
{
StringSettings = ConfigurationManager.ConnectionStrings["ConnectionString"];
}
else
{
StringSettings = ConfigurationManager.ConnectionStrings[ConfigString];
}
return StringSettings.ProviderName;
}
/// 返回数据提供者
public string GetProviderName()
{
return GetProviderName(ConfigString);
}
#endregion
//=====================================================获得连接字符串====================================
#region 获得连接字符串
public string GetConnectionString(string ConfigString)
{
ConnectionStringSettingsCollection ConfigStringCollention = ConfigurationManager.ConnectionStrings;
if (ConfigStringCollention == null || ConfigStringCollention.Count <= 0)
{
throw new Exception("web.config 中无连接字符串!");
}
ConnectionStringSettings StringSettings = null;
if (ConfigString == string.Empty)
{
StringSettings = ConfigurationManager.ConnectionStrings["ConnectionString"];
}
else
{
StringSettings = ConfigurationManager.ConnectionStrings[ConfigString];
}
return StringSettings.ConnectionString;
}
public string GetConnectionString()
{
return GetConnectionString(ConfigString);
}
#endregion
//==============================================GetDbproviderFactory=========================

#region 返回数据工厂 public DbProviderFactory GetDbProviderFactory()
/// 返回数据工厂
public DbProviderFactory GetDbProviderFactory()
{
DbProviderFactory f = null;
string ProviderName = GetProviderName();
switch (ProviderName)
{
case "System.Data.SqlClient":
f = GetDbProviderFactory("System.Data.SqlClient");
break;
case "System.Data.OracleClient":
f = GetDbProviderFactory("System.Data.OracleClient");
break;
case "System.Data.OleDb":
f = GetDbProviderFactory("System.Data.OleDb");
break;
default:
f = GetDbProviderFactory("System.Data.SqlClient");
break;
}
return f;
}
/**/
/// <summary>
/// 返回数据工厂
public DbProviderFactory GetDbProviderFactory(string providername)
{
return DbProviderFactories.GetFactory(providername);
}
#endregion

//==============================================CreateConnection=============================
#region 创建数据库连接 public DbConnection CreateConnection()
/**/
/// <summary>
/// 创建数据库连接
public DbConnection CreateConnection()
{
DbConnection con = GetDbProviderFactory().CreateConnection();
con.ConnectionString = GetConnectionString();

return con;
}
/**/
/// <summary>
/// 创建数据库连接
public DbConnection CreateConnection(string provdername)
{
DbConnection con = GetDbProviderFactory(provdername).CreateConnection();
con.ConnectionString = GetConnectionString();

return con;

}
#endregion

//==============================================CreateCommand================================

#region 创建执行命令对象 public override DbCommand CreateCommand(string sql, CommandType cmdType, DbParameter[] parameters)
/**/
/// <summary>
/// 创建执行命令对象
public DbCommand CreateCommand(string sql, CommandType cmdType, DbParameter[] parameters)
{
DbCommand _command = GetDbProviderFactory().CreateCommand();
_command.Connection = CreateConnection();
_command.CommandText = sql;
_command.CommandType = cmdType;
if (parameters != null && parameters.Length > 0)
{
foreach (DbParameter param in parameters)
{
_command.Parameters.Add(param);
}
}
return _command;
}
/// 创建执行命令对象
public DbCommand CreateCommand(string sql)
{
DbParameter[] parameters = new DbParameter[0];
return CreateCommand(sql, CommandType.Text, parameters);
}
/// 创建执行命令对象
public DbCommand CreateCommand(string sql, CommandType cmdtype)
{
DbParameter[] parameters = new DbParameter[0];
return CreateCommand(sql, cmdtype, parameters);
}
/// 创建执行命令对象
public DbCommand CreateCommand(string sql, DbParameter[] parameters)
{
return CreateCommand(sql, CommandType.Text, parameters);
}
#endregion


110,538

社区成员

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

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

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