我尝试从数据集中填充数组。 首先,我正在创建一个类
public class BasvuruMaster
{
public string Tarih { get; set; }
public string Icerik { get; set; }
public string RefNo { get; set; }
}
其次我正在创建连接
我可以连接到我的数据库,但我无法填充我的数组。
public BasvuruMaster[] BasvuruListele(string TCK)
{
string stm = "SELECT TARIH,ICERIK ,REFNO FROM TABLE WHERE TCK=@TCK";
MySqlDataAdapter da = new MySqlDataAdapter(stm, cnn);
da.SelectCommand.Parameters.AddWithValue("@TCK", TCK);
DataSet ds = new DataSet();
da.Fill(ds);
BasvuruMaster[] BasVurList = new BasvuruMaster[ds.Tables[0].Rows.Count];
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
if (ds.Tables.Count > 0)
{
BasVurList[i].Tarih = ds.Tables[0].Rows[i + 1].ItemArray[0].ToString();
BasVurList[i].Icerik = ds.Tables[0].Rows[i+1].ItemArray[1].ToString();
BasVurList[i].RefNo = ds.Tables[0].Rows[i+1].ItemArray[2].ToString();
}
}
return BasVurList;
}
我应该做什么?
错误消息是
类型&#39; System.NullReferenceException&#39;的例外情况发生在 WebApplication1.dll但未在用户代码中处理
答案 0 :(得分:2)
我试着深入解释一下。
来自Arrays (C# Programming Guide)
数值数组元素的默认值设置为零,和 引用元素设置为null 。
由于您有一个BasvuruMaster
数组(class
是reference type),所有元素都被归为null
。并且因为您尝试访问Tarih
{1}}的{1}},Icerik
和RefNo
属性,这就是null
的原因。
您可以初始化for循环中的所有NullReferenceException
元素。
BasvuruMaster
使用该行,您可以使用BasvuruMaster[] BasVurList = new BasvuruMaster[ds.Tables[0].Rows.Count];
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
if (ds.Tables.Count > 0)
{
BasVurList[i] = new BasvuruMaster(); <-- HERE
BasVurList[i].Tarih = ds.Tables[0].Rows[i].ItemArray[0].ToString();
BasVurList[i].Icerik = ds.Tables[0].Rows[i].ItemArray[1].ToString();
BasVurList[i].RefNo = ds.Tables[0].Rows[i].ItemArray[2].ToString();
}
}
初始化元素,并将其属性初始化为默认值。 (因为它们是new BasvuruMaster()
,默认情况下string
,Tarih
和Icerik
都是RefNo
正如拉尔夫指出的那样,我认为你的null
应该是ds.Tables[0].Rows[i+1]
,因为你仍然尝试在最后一个值之后递增,你将获得超出范围异常的索引。< / p>