我想将datatbase表中的值存储到array.but当我这样做时,异常“object eferance not set instance of object”通过请查看我的代码。
.cod Behinde
public DataSet showoption1()
{
SqlCommand cmd = new SqlCommand("select * from assessmenttest",con);
SqlDataAdapter adptr = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
adptr.Fill(ds,"test");
int [] arr=new int[10];
DataTable table=ds.Tables[0];
for(int i=0;i<table.Rows.Count;i++ )
{
test.Agree[i] =Convert.ToInt32(ds.Tables[0].Rows[i]["option1"]);
}
业务逻辑层类代码:
公共课堂考试{public static int []同意;
}
答案 0 :(得分:2)
test.agree
是null
。
您需要在该字段中放置一个新数组。
答案 1 :(得分:1)
你究竟在哪里得到错误,在哪个阵列上?根据它的外观,它必须在agree []上,你永远不会实例化。
尝试
public static int[] agree =new int[10];
但我想你可能想要同意一个清单,因为你不知道你需要多少
public static List<int> agree = new List<int>;
然后使用
agree.Add(Convert.ToInt32(ds.Tables[0].Rows[i]["option1"]);
你可以像数组一样访问它
MessageBox.Show(agree[1].ToString());
答案 2 :(得分:0)
在添加值之前实例化:
SqlCommand cmd = new SqlCommand("select * from assessmenttest", con);
SqlDataAdapter adptr = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
adptr.Fill(ds, "test");
int[] arr = new int[10];
DataTable table = ds.Tables[0];
test.agree = new int[table.Rows.Count];
for (int i = 0; i < table.Rows.Count; i++)
{
test.agree[i] = Convert.ToInt32(ds.Tables[0].Rows[i]["option1"]);
}