Enterprise Library 4的DataAccess Block连接ACCESS数据库支持DbCommand和AddInParameter()ConnectString是:  
Provider=Microsoft.Jet.OLEDB.4.0;Data Source="E:\科研相关\Access AirborneEquipmentProgramDevelopment\AirDB.mdb";Persist Security Info=False
string sqlstr = "  update [tblDepartment]  SET"
                 + " [TelOnDuty] = @TelOnDuty,"
                 + " [Airport] = @Airport, "
                 + "[OpenName] = @OpenName, "
                 + " [PostcodeDptmt] =  @PostcodeDptmt, "
                 + " [AddressDptmt]  = @AddressDptmt "
                 + "  where  [DepartmentPath] = @DepartmentPath ";
             Database db = DatabaseFactory.CreateDatabase("AirMDBConnectionString");
             DbCommand dbCommand = db.GetSqlStringCommand(sqlstr);             db.AddInParameter(dbCommand, "DepartmentPath", DbType.String, this.DepartmentPath);
             db.AddInParameter(dbCommand, "TelOnDuty", DbType.String, this.TelOnDuty);
             db.AddInParameter(dbCommand, "Airport", DbType.String, this.Airport);
             db.AddInParameter(dbCommand, "OpenName", DbType.String, this.OpenName);
             db.AddInParameter(dbCommand, "PostcodeDptmt", DbType.String, this.PostcodeDptmt);
             db.AddInParameter(dbCommand, "AddressDptmt", DbType.String, this.AddressDptmt); 
          
            db.ExecuteNonQuery(dbCommand);
执行起来既不报错,数据库内容也没有修改。而我原来用的是sqlServer2005的数据库,是可以实现数据库内容修改的。只是把代码中的Database db = DatabaseFactory.CreateDatabase("AirMDBConnectionString");修改了。是否Access的mdb数据库不支持这种添加参数操作。

解决方案 »

  1.   

    连接字符串正确的,我的程序中多处用到对该MDB数据库文件的操作,都能成功,唯独此处不通
      

  2.   

    Access本身不支持参数化查询,你用参数名和用?是一样的效果,因此,它严格要求参数个数与顺序必须与sql语句中的完全一致,你的DepartmentPath参数,最后一个AddIn应该就可以了