从数据集中填充数组

时间:2015-05-20 13:46:18

标签: c# .net web-services

我尝试从数据集中填充数组。 首先,我正在创建一个类

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但未在用户代码中处理

1 个答案:

答案 0 :(得分:2)

我试着深入解释一下。

来自Arrays (C# Programming Guide)

  

数值数组元素的默认值设置为零,和   引用元素设置为null

由于您有一个BasvuruMaster数组(classreference type),所有元素都被归为null。并且因为您尝试访问Tarih {1}}的{​​1}},IcerikRefNo属性,这就是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(),默认情况下stringTarihIcerik都是RefNo

正如拉尔夫指出的那样,我认为你的null应该是ds.Tables[0].Rows[i+1],因为你仍然尝试在最后一个值之后递增,你将获得超出范围异常的索引。< / p>