我仿造SQLHelper写了一个处理Access2003的类,程序中部分是象这样:
using System;
using System.Configuration;
using System.Data;
using System.Collections;using System.Web;
using System.Data.OleDb;namespace SQLHelper
{
    public abstract class AccessHelper
    {        //Database connection strings
        public static readonly string ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+
                              System.Web.HttpContext.Current.Server.MapPath("../data/HJDB.mdb");
        
        // Hashtable to store cached parameters
        private static Hashtable parmCache = Hashtable.Synchronized(new Hashtable());        public static int ExecuteNonQuery(string connectionString, CommandType cmdType, string cmdText, params OleDbParameter[] commandParameters)
        {
            OleDbCommand cmd = new OleDbCommand();            using (OleDbConnection conn = new OleDbConnection(connectionString))
            {
                PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);                int val = cmd.ExecuteNonQuery();
                cmd.Parameters.Clear();
                return val;
            }
        }
。下面当然还有其他方法,我把这个编译为一个AccessHelper.dll了,然后,新建了一个网站项目,在新项目中引用了上面的AccessHelper.dll,
但是,在新项目的程序中,或者类程序中,却不能象下面这样使用其中的方法:
#using SQLHelper....
    AccessHelper.ExecuteNonQuery(.....);               //在这里报错说是AccessHelper没有ExecuteNonQuery这个属性
请问这是什么原因呢?

解决方案 »

  1.   

    public abstract class AccessHelper
      

  2.   

    你的意思这里面的abstract不要还是用错了?
      

  3.   

    using SQLHelper不是#using SQLHelper
      

  4.   

    #using SQLHelper错了最好将SqlHelper做成类库直接引用
      

  5.   

    呵呵,谢谢楼上几位指点,把你们说的纠正了,可以使用了!
    想继续请教一个低级问题,我在程序里面这样用:
    using System.Data;
    using SQLHelper;/// <summary>
    ///clsDocumentsInfo:
    /// </summary>
    public class clsDocumentsInfo
    {    
            //在这个地方不能使用AccessHelper
            AccessHelper.
                 //而是在下面的这些方法中都可以正常使用,这是为什么呢? public clsDocumentsInfo()
    {
    //
    //TODO: 在此处添加构造函数逻辑
    //        
                    AccessHelper.ExecuteNoeQuery(...); }    public int add()
        {
             AccessHelper.ExecuteNoeQuery(...);    }
    }
      

  6.   

    我在想,没有引入命名空间的话
    AccessHelper.ExecuteNonQuery(.....); 
    这句不是应该报不存在AccessHelper的编译错误吗
      

  7.   

    我是在使用的时候根本就不能访问AccessHelper里面的方法,不会显示方法清单的
      

  8.   

    本帖最后由 net_lover 于 2012-07-21 10:34:23 编辑
      

  9.   

    呵呵,这里的abstract是仿造的结果,实际上是不懂被仿造的程序为什么这样用。现在去掉就好了
      

  10.   

    是,那是因为没有引入命名空间,那也应该是报AccessHelper不存在的错误,而不是“AccessHelper没有ExecuteNonQuery这个属性”,因为首先编译器就不认识AccessHelper,难道我又想错了?
      

  11.   

    cnfixit:我是在解决方案中加入了AccessHelper这个项,然后又引用了它生成的DLL的,所以能找到这个类,却不能用它的方法,就是我上面说的使用的地方不对,但我还不知道什么原因?