程序在连接Access和SQL时,是由参数来决定连接哪个类型的数据库。
if (DataType=="Access")
{
  strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data   Source=\\data.mdb";
  OleDbConnection Conn = new OleDbConnection(strConn);
  OleDbCommand cm = new OleDbCommand("", Conn);
  OleDbDataReader dr;
}
else

   strConn = "Server=(local);User ID=sa;Password=;Initial Catalog=Northwind";
  SqlConnection Conn = new SqlConnection(strConn);
  SqlCommand cm = new SqlCommand("", Conn);
  SqlDataReader dr;
}怎么返回上面的Conn,cm,dr的值?
这样一来,我想在执行SQL语句时,就不管是cm是SqlCommand 和OleDbCommand 
cm.CommandText="select * from A";
cm.ExecuteNonQuery();

解决方案 »

  1.   

    if(dr.Reader())
     TextBox1.Text=dr["vote_count"];
      ............
      

  2.   

    OleDbCommand, OleDbDataReader, SqlCommand, SqlDataReader都是不同的类型,
    所以,Conn,cm,dr在实例化的时候,也是不同的类型。要处理这个问题可不是一个“简单”的问题。你要么就做一个类包装一下,不然没别的办法。public class SqlHelper
    {
    private string _SqlCommand;  // 命令行
    private string _ConnString;  // 数据库连接
    private DataSet _ResultSet;  // 结果集
    private string _CommandType; // 类型
    private object[] Parameters; // 参数集
    // 这里设置属性// 执行Sql,结果放入ResultSet
    public void Invoke()
    {
    }// 设定参数
    public void AddParameter()
    {
    }
    }
      

  3.   

    或者把数据库连接写到config文件,需要用哪个就用哪个咯,然后connection、commmond等各写一套就是了
      

  4.   

    在配置文件里加就行了,随你加多少种数据连接.
    <add key="ConnStr" value="server=.;DataBase=ch5;Integrated Security=SSPI"/>
    <add key="AccessConnStr" value="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=.\ems.mdb"/>
    <add.......
      

  5.   

    用工厂
    .Net给你提供了更好的解决方案