public abstract class DBhander : IDisposable
    {
    .....
        public void Dispose()
        {
            this.Close();
        }/// <summary>
        /// 传入数据库连接对象创建连接
        /// </summary>
        public void SetConn(IDbConnection _conn)
        {
            conn = _conn;
            cmd = conn.CreateCommand();
        } /// <summary>
        /// 查询条件
        /// </summary>
        public string conditionStr = string.Empty; public string GetValue(string tablename, string field)
        {
            string tempstr = "select " + field + " from " + tablename;
            if (this.conditionStr != string.Empty)
            {
                tempstr = tempstr + " where " + this.conditionStr;
            }
            else
            {
                this.Close();
                throw new ArgumentException("该方法必须要指定conditionStr变量的值!");
            }
            cmd.CommandText = tempstr;
            return cmd.ExecuteScalar().ToString();
        } /// <summary>
        /// 关闭连接
        /// </summary>
        public void Close()
        {
            if (conn != null)
            {
                if (conn.State == ConnectionState.Open)
                {
                    conn.Close();
                    conn.Dispose();
                }
            }
        }
}
上面这个是一个数据库操作代码,
下面的类继承并创建和打开链接        /// <summary>
        /// 使用默认连接
        /// </summary>
        public SqlServerDbHander()
        {
            dbType = DbType.SqlServer;
            if (conn != null)
            {
                if (conn.State == System.Data.ConnectionState.Open)
                {
                    SetConn(conn);
                }
                else
                {
                    System.Data.SqlClient.SqlConnection tempconn = new System.Data.SqlClient.SqlConnection(connectionStr);
                    SetConn(tempconn);
                    tempconn.Open();
                    da = new System.Data.SqlClient.SqlDataAdapter();                }
            }
            else
            {
                System.Data.SqlClient.SqlConnection tempconn = new System.Data.SqlClient.SqlConnection(connectionStr);
                SetConn(tempconn);
                tempconn.Open();
                da = new System.Data.SqlClient.SqlDataAdapter();
            }
        }
在一个GetCatalogName.cs类文件中我写了一个静态的方法 
class GetCatalogName
{
....
    public static string GetName(int id)
   {
      SqlServerDbHander sqlcmd=new SqlServerDbHander();
      sqlcmd.conditionStr=" id="+id;
      string returnStr=sqlcmd.GetValue("table1","field");
      sqlcmd.Close();
      return returnStr;
   }
}
某aspx网页中调用该静态方法获取相应的值,语句如下
<%=GetCatalogName.GetName(1)%>,
<%=GetCatalogName.GetName(2)%>,
<%=GetCatalogName.GetName(3)%>,
页面报错,说GetCatalogName.cs页面 string returnStr=sqlcmd.GetValue("table1","field");没有引用到对象的实例;
当我删除<%=GetCatalogName.GetName(2)%>, <%=GetCatalogName.GetName(3)%>,这两句运行正常,单独留下任何一条语句,调用都不会出错,找了很久不知道是什么原因!
我在GetName(int id)这个方法里还有操作的底层调试发现,conn正常打开,cmd正常实例化,commandText正常,不知道为什么连续调用二次以上会出错,希望大家帮忙!
小弟万分感激!谢啦!