在IDAL类库的接口
using System;
using System.Data;
namespace stumanage.IDAL
{
/// <summary>
/// 接口层Iuserdata 的摘要说明。
/// </summary>
public interface Iuserdata
{
#region  成员方法
/// <summary>
/// 是否存在该记录
/// </summary>
bool Exists(string user_name);
         }
}
在DALFactory类库中有
using System;
 using System.Reflection;
 using System.Configuration;
 using stumanage.IDAL;
namespace stumanage.DALFactory
{
     public sealed class DataAccess
{
private static readonly string path = System.Configuration.ConfigurationSettings.AppSettings["DAL"];
/// <summary>
/// 创建对象或从缓存获取
/// </summary>
public static object CreateObject(string path,string CacheKey)
{
object objType = DataCache.GetCache(CacheKey);//从缓存读取
if (objType == null)
{
try
{
objType = Assembly.Load(path).CreateInstance(CacheKey);//反射创建
DataCache.SetCache(CacheKey, objType);// 写入缓存
}
catch
{}
}
return objType;
}
/// <summary>
/// 创建userdata数据层接口
/// </summary>
public static stumanage.IDAL.Iuserdata Createuserdata()
{
string CacheKey = path+".userdata";
object objType=CreateObject(path,CacheKey);
return (Iuserdata)objType;
}
}
在SQLServerDAL类库中有
using System;
 using System.Data;
 using System.Text;
 using System.Data.SqlClient;
 using stumanage.IDAL;
namespace stumanage.SQLServerDAL
{
/// <summary>
/// 数据访问类userdata 。
/// </summary>
public class userdata:Iuserdata
{
public userdata()
{}
#region  成员方法
                  /// <summary>
/// 是否存在该记录
/// </summary>
public bool Exists(string user_name)
{
int rowsAffected;
SqlParameter[] parameters = {
new SqlParameter("@user_name", SqlDbType.VarChar,20)
};
parameters[0].Value = user_name;
int result= DbHelperSQL.RunProcedure("UP_userdata_Exists",parameters,out rowsAffected);
if(result==1)
{
return true;
}
else
{
return false;
}
          }
            }
}
在BLL类库中有
using System;
 using System.Data;
 using System.Text;
 using System.Data.SqlClient;
 using stumanage.IDAL;
 using stumanage.DALFactory;
namespace stumanage.BLL
{
/// <summary>
/// 业务逻辑类userdata 的摘要说明。
/// </summary>
public class userdata
{
private static readonly Iuserdata  dal =  DataAccess.Createuserdata();
public userdata()
{}
#region  成员方法
/// <summary>
/// 是否存在该记录
/// </summary>
                  public bool Exists(string user_name)
{
return dal.Exists(user_name);
}
           }   
}  
我在登陆页面 login.aspx.cs中有如下代码,编译通过,运行时登陆后报错
stumanage.BLL.userdata bllud = new stumanage.BLL.userdata();
if( bllud.Exists(user))
        {
        Response.Write("<script language='javascript'>alert('账号不存在');</script>");
        return;
        }
报的错误
异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。源错误: 
行 32:  public bool Exists(string user_name)
行 33:  {
行 34:  return dal.Exists(user_name);
行 35:  }
行 36: 
 
我已在webconfig定义了<appSettings>
<add key="ConnectionString" value="server=127.0.0.1;initial catalog=king;uid=sa;pwd=fscw" />
<add key="DAL" value="stumanage.SQLServerDAL" />
</appSettings>   

解决方案 »

  1.   

    public static stumanage.IDAL.Iuserdata Createuserdata()
    {
    string CacheKey = path+".userdata";
    object objType=CreateObject(path,CacheKey);
    return (Iuserdata)objType;
    }
    private static readonly Iuserdata  dal =  DataAccess.Createuserdata();
    public bool Exists(string user_name)
    {
    int rowsAffected;
    SqlParameter[] parameters = {
    new SqlParameter("@user_name", SqlDbType.VarChar,20)
    };
    parameters[0].Value = user_name;
    int result= DbHelperSQL.RunProcedure("UP_userdata_Exists",parameters,out rowsAffected);
    if(result==1)
    {
    return true;
    }
    else
    {
    return false;
    }
              }public bool Exists(string user_name)
    :  {
    return dal.Exists(user_name);
      }
    顺序是这样的 不知道哪里的错误啊 郁闷
      

  2.   

    这么久了 CSDN没个人理下我啊 都很少用三层结构开发吗??
      

  3.   

    报的错误
    异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。源错误: 
    行 32:  public bool Exists(string user_name)
    行 33:  {
    行 34:  return dal.Exists(user_name);
    行 35:  }
    行 36: 
      

  4.   

    凡是调用dal的方法都出错,但这是自动生成的,别的项目都用的正常,错误应该不在这句,有经验的知道是哪里出错吗  设置问题?