C# 从数据集填充数组
我尝试从数据集中填充数组。 首先,我创建一个类C# 从数据集填充数组,c#,.net,web-services,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
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;
}
public basvurmaster[]BasvuruListele(字符串TCK)
{
string stm=“从表中选择TARIH、ICERIK、REFNO,其中TCK=@TCK”;
MySqlDataAdapter da=新的MySqlDataAdapter(stm,cnn);
da.SelectCommand.Parameters.AddWithValue(“@TCK”,TCK);
数据集ds=新数据集();
da.填充(ds);
BASVURMaster[]BasVurList=新的BASVURMaster[ds.Tables[0].Rows.Count];
对于(int i=0;i0)
{
BasVurList[i].Tarih=ds.Tables[0]。行[i+1]。ItemArray[0]。ToString();
BasVurList[i].Icerik=ds.Tables[0]。行[i+1]。ItemArray[1]。ToString();
BasVurList[i].RefNo=ds.Tables[0]。行[i+1]。项目数组[2]。ToString();
}
}
返回巴斯夫利斯特;
}
我该怎么办
错误消息是
中发生“System.NullReferenceException”类型的异常
WebApplication1.dll,但未在用户代码中处理
我试着深入地解释一下 从 数值数组元素的默认值设置为零,并且 引用元素被设置为null 由于您有一个
basvuramaster
数组(这是一个类
,它是一个数组),所以您的所有元素都被初始化为null
。由于您尝试访问Tarih
,Icerik
和RefNo
值的属性,这就是为什么您会得到NullReferenceException
您可以初始化for循环中的所有basvurmaster
元素
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();
}
}
basvurmaster[]BasVurList=new basvurmaster[ds.Tables[0].Rows.Count];
对于(int i=0;i0)
{
BasVurList[i]=new basvurmaster();我们也可以看到basvurmaster
的定义吗?在哪一行出现此错误?此外,我编辑了它。现在您可以看到basvurmaster。我在for循环中遇到了麻烦。BasVurList[i]。Tarih=ds.Tables[0]。行[i+1]。ItemArray[0]。ToString();此行有问题设置断点。请检查数据集。检查数组索引。行[i+1]仍将位于最后一行之后。在演示如何执行此操作时,请将if置于循环之外;)@拉尔夫:是的,我没有把重点放在那部分:)。更新了。谢谢,但我仍然有问题。当我尝试以这种方式编写时,我无法构建它。消息是找不到类型或命名空间名称“BasvurList”(您是否缺少using指令或程序集引用?@EgemenHALICI抱歉。它应该是new basvurmaster()
。已修复。