对象引用未设置为对象C#类的实例

本文关键字:实例 对象 设置 对象引用 | 更新日期: 2023-09-27 18:24:36

我在C#windows窗体应用程序中尝试调用DataAccess层时不断收到此错误。

在我的设计中,我使用了一个接口和一个类。

这个名为iDataAccess的接口,里面的代码看起来像这样:

IDataAccess.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;
public interface IDataAccess
{
    object GetScalar(string sql);
    DataTable GetDataTable(string sql);
    int InsOrUpdOrDel(string sql);
}

名为DataAccess的类及其内部的代码如下所示:DataAccess.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.SqlClient;
using System.Data;
using System.Configuration;
public class DataAccess : IDataAccess  
{
    public static string CONNSTR = ConfigurationManager.ConnectionStrings["SqlDbConnect"].ConnectionString;
    public DataAccess()
    {
    }
  public System.Data.DataTable GetDataTable(string sql)
    {
        DataTable dt = new DataTable();
        SqlConnection conn = new SqlConnection(CONNSTR);
        try
        {
            conn.Open();
            SqlDataAdapter da = new SqlDataAdapter(sql, conn);
            da.Fill(dt);
        }
        catch (Exception)
        {
            throw;
        }
        finally
        {
            conn.Close();
        }
        return dt;
    }
}

现在,在form.cs代码中,我想创建一个上述类的对象。出于这个原因,我尝试了两种不同的方法,但都不适用于我,如下所示:

IDataAccess _idataAccess = new DataAccess();//我获取实例失败错误

IDataAccess _idataAccess = null;//错误:对象引用未设置为对象的实例

有人能给我一个关于这个问题的想法吗?

对象引用未设置为对象C#类的实例

您没有SqlDbConnect

 ConfigurationManager.ConnectionStrings["SqlDbConnect"].ConnectionString;

在您的配置中。

确保这行返回您期望的内容。

除非在数据访问类中实现这些方法,否则您的代码无法编译

public object GetScalar(string sql)
    {
        throw new NotImplementedException();
    }
    public int InsOrUpdOrDel(string sql)
    {
        throw new NotImplementedException();
    }
IDataAccess _idataAccess = new DataAccess();

将起作用,但您需要实施

object GetScalar(string sql);

int InsOrUpdOrDel(string sql);

在中

DataAccess

如下

public class DataAccess : IDataAccess  
{
    public static string CONNSTR = ConfigurationManager.ConnectionStrings["SqlDbConnect"].ConnectionString;
    public DataAccess()
    {
    }
  object GetScalar(string sql)
  {
      return new object();
  }
  int InsOrUpdOrDel(string sql)
  {
      return 1;
  }
  public System.Data.DataTable GetDataTable(string sql)
    {
        DataTable dt = new DataTable();
        SqlConnection conn = new SqlConnection(CONNSTR);
        try
        {
            conn.Open();
            SqlDataAdapter da = new SqlDataAdapter(sql, conn);
            da.Fill(dt);
        }
        catch (Exception)
        {
            throw;
        }
        finally
        {
            conn.Close();
        }
        return dt;
    }
}