对象引用未设置为对象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;
//错误:对象引用未设置为对象的实例
有人能给我一个关于这个问题的想法吗?
您没有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;
}
}