请高手指点,高分相赠!!!! microsoft公司的petshop是最好的例子,不妨研究一下 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 sjzwinfor,你说的代码在哪里能得到?? 当然是两个类,连接字符串的不同在MSDN中查一查就行了 可以使用中间变量 引用多种类型的连接System.Data.IdbConnection 将 连接 变量声明为IdbConnection对象然后 根据 选择 来 确定使用那个连接 同意sjzwinfor(我喜欢c#) 看看petshop的数据库可移植性http://www.microsoft.com/china/msdn/library/enterprisedevelopment/builddistapp/Microsoft.NETPetShop3.x-DesignPatternsandArchitectureofthe.NETPetShop.mspx#XSLTsection126121120120的数据可可移植性部分 重新封装ADO.Net,将它独立成为数据访问层,提供所有类型的数据提供者:Sql,OleDb,Odbc,Oracle初始化连接时,传入配置文件和连接字符串。这样做的话,当数据库迁移时,程序无需更改太多代码,只需修改配置文件和连接字符串。我做的程序就是利用自己的一个DataAccess类,很方便 使用反射来做反射(System.Activator)也一样,也是一种变量,不过是一种特殊的变量,它可以动态生成类,根据我们的需要动态生成类,就是说用不着使用new关键字来手工生成类了。这个类我已经使用,用的地方是自动选择数据库,就是我写的程序可以自动匹配Access数据库和SqlServer数据库。其实就是使用了System.Activator类,根据不同的设定返回不同的OleDbConnection,OleDbCommand或者是SqlConnection,SqlCommand对象。这样,根据不同的配置,就可以自动匹配Access数据库或SqlServer数据库了。 看看微软的DataAccessApplicationBlock 使用DataAccess Block,就是那个SqlHelper.不过楼主也可以参考我写的一个类。using System;using System.Data;using System.Data.OleDb;namespace ZZ.DAL{ /// <summary> /// AccessDbHelper 的摘要说明。 /// </summary> public class AccessDbHelper { private static string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=GMS.mdb;Persist Security Info=False;"; /// <summary> /// 获取单个值 /// </summary> /// <param name="strSql"></param> /// <returns></returns> public static object ExecuteScalar(string strSql) { object o = null; OleDbConnection myConn = new OleDbConnection(strConn); OleDbCommand myComm = new OleDbCommand(strSql,myConn); try { myConn.Open(); o = myComm.ExecuteScalar(); } catch(Exception e) { e.ToString(); } finally { myConn.Close(); } return o; } /// <summary> /// 更新数据 /// </summary> /// <param name="strSql"></param> public static int ExecuteNonQuery(string strSql) { int count = -1; OleDbConnection myConn = new OleDbConnection(strConn); OleDbCommand myComm = new OleDbCommand(strSql,myConn); try { myConn.Open(); count = myComm.ExecuteNonQuery(); } catch(Exception e) { e.ToString(); } finally { myConn.Close(); } return count; } /// <summary> /// 获取数据读取器 /// </summary> /// <param name="strSql"></param> public static OleDbDataReader ExecuteReader(string strSql) { OleDbConnection myConn = new OleDbConnection(strConn); OleDbCommand myComm = new OleDbCommand(strSql,myConn); myConn.Open(); return myComm.ExecuteReader(CommandBehavior.CloseConnection); } /// <summary> /// 获取数据集 /// </summary> /// <param name="strSql"></param> /// <returns></returns> public static DataSet ExecuteDataSet(string strSql) { DataSet ds = new DataSet(); OleDbConnection myConn = new OleDbConnection(strConn); try { OleDbCommand myComm = new OleDbCommand(strSql,myConn); OleDbDataAdapter myAda = new OleDbDataAdapter(myComm); myAda.Fill(ds,"TableName"); } catch(Exception e) { e.ToString(); ds = null; } finally { myConn.Close(); } return ds; } }}上面使用在Access里,在Sql Server上面也类似。 大家说说使用ArrayList和泛型List的异同和场合。 怎样制作窗口弹出效果? 打印分页,多线程 C# Winform 安装 如何将数据库的数据源插入到Excel中去了? 设计个邮件对比控件和后台,急啊,各位老大帮忙啊. 奇怪的错误提示 c#安装程序的部署的问题 如何在页面Page_Load时自动触发Button按钮的Command事件 JavaScript CALL回调参数在ASPX中怎么取得这个参数 关于dr啊。 急求,请大侠给些数据库的资料,谢!
System.Data.IdbConnection
将 连接 变量声明为IdbConnection对象
然后 根据 选择 来 确定使用那个连接
http://www.microsoft.com/china/msdn/library/enterprisedevelopment/builddistapp/Microsoft.NETPetShop3.x-DesignPatternsandArchitectureofthe.NETPetShop.mspx#XSLTsection126121120120
的数据可可移植性部分
Sql,OleDb,Odbc,Oracle
初始化连接时,传入配置文件和连接字符串。
这样做的话,当数据库迁移时,程序无需更改太多代码,只需修改配置文件和连接字符串。
我做的程序就是利用自己的一个DataAccess类,很方便
这个类我已经使用,用的地方是自动选择数据库,就是我写的程序可以自动匹配Access数据库和SqlServer数据库。其实就是使用了System.Activator类,根据不同的设定返回不同的OleDbConnection,OleDbCommand或者是SqlConnection,SqlCommand对象。
这样,根据不同的配置,就可以自动匹配Access数据库或SqlServer数据库了。
不过楼主也可以参考我写的一个类。
using System;
using System.Data;
using System.Data.OleDb;namespace ZZ.DAL
{
/// <summary>
/// AccessDbHelper 的摘要说明。
/// </summary>
public class AccessDbHelper
{
private static string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=GMS.mdb;Persist Security Info=False;";
/// <summary>
/// 获取单个值
/// </summary>
/// <param name="strSql"></param>
/// <returns></returns>
public static object ExecuteScalar(string strSql)
{
object o = null;
OleDbConnection myConn = new OleDbConnection(strConn);
OleDbCommand myComm = new OleDbCommand(strSql,myConn);
try
{
myConn.Open();
o = myComm.ExecuteScalar();
}
catch(Exception e)
{
e.ToString();
}
finally
{
myConn.Close();
}
return o;
}
/// <summary>
/// 更新数据
/// </summary>
/// <param name="strSql"></param>
public static int ExecuteNonQuery(string strSql)
{
int count = -1;
OleDbConnection myConn = new OleDbConnection(strConn);
OleDbCommand myComm = new OleDbCommand(strSql,myConn);
try
{
myConn.Open();
count = myComm.ExecuteNonQuery();
}
catch(Exception e)
{
e.ToString();
}
finally
{
myConn.Close();
}
return count;
}
/// <summary>
/// 获取数据读取器
/// </summary>
/// <param name="strSql"></param>
public static OleDbDataReader ExecuteReader(string strSql)
{
OleDbConnection myConn = new OleDbConnection(strConn);
OleDbCommand myComm = new OleDbCommand(strSql,myConn);
myConn.Open();
return myComm.ExecuteReader(CommandBehavior.CloseConnection);
}
/// <summary>
/// 获取数据集
/// </summary>
/// <param name="strSql"></param>
/// <returns></returns>
public static DataSet ExecuteDataSet(string strSql)
{
DataSet ds = new DataSet();
OleDbConnection myConn = new OleDbConnection(strConn);
try
{
OleDbCommand myComm = new OleDbCommand(strSql,myConn);
OleDbDataAdapter myAda = new OleDbDataAdapter(myComm);
myAda.Fill(ds,"TableName");
}
catch(Exception e)
{
e.ToString();
ds = null;
}
finally
{
myConn.Close();
}
return ds;
}
}
}
上面使用在Access里,在Sql Server上面也类似。