C# 对象引用未设置为对象的实例。C
我可以从数据库中获取记录并将其放入对象中C# 对象引用未设置为对象的实例。C,c#,database,object,C#,Database,Object,我可以从数据库中获取记录并将其放入对象中 for (int i = 0; i < selectedFishes.Length; i++) { string stm = "SELECT * FROM Data WHERE name='" + selectedFishes[i] + "'"; SQLiteCommand cmd = new SQLiteCommand(stm, conn); SQLiteDataReader rdr = cmd.ExecuteReader
for (int i = 0; i < selectedFishes.Length; i++)
{
string stm = "SELECT * FROM Data WHERE name='" + selectedFishes[i] + "'";
SQLiteCommand cmd = new SQLiteCommand(stm, conn);
SQLiteDataReader rdr = cmd.ExecuteReader();
while (rdr.Read())
{
fish[i] = new fish(rdr.GetString(0), rdr.GetDouble(1), rdr.GetDouble(2), rdr.GetDouble(3), rdr.GetDouble(4));
Console.WriteLine(fish[i].name + " " + fish[i].value1 + " " + fish[i].value2 + " " + fish[i].value3 + " " + fish[i].value4);//it can be displayed into console
}
}
MessageBox.Show(selectedFishes.Length.ToString()+" "+fish.Length.ToString());//results are same if the value >5 cant be displayed
for (int i = 0; i < fish.Length; i++)
{
Console.WriteLine(fish[i].name + " " + fish[i].value1 + " " + fish[i].value2 + " " + fish[i].value3 + " " + fish[i].value4);
}
为什么不能展示?
错误isObject引用未设置为对象的实例
之前谢谢你我在胡乱猜一猜,说的是精选的鱼。长度可能不等于鱼。长度。准确地说,前者很可能比后者少 这意味着您只为selectedFishes.Length-1的索引0创建对象,然后尝试访问仍然为null并导致该异常的索引selectedFishes.Length 要解决这个问题,您可以更改第二个for循环的上限,或者在其内部执行null检查
编辑:你真的想在第一个for循环中使用while循环吗?我在while循环中没有改变,所以您可以继续将fish对象添加到相同的数组索引中 按f9将断点添加到第二个控制台写入线。按f5。让您的程序命中断点。检查ifname或value1-4是否为空。添加代码以处理空值 > P>我总是说在Null RetryExchange中,尝试对每个你期望有值的对象串。哪一行是错误发生的?第二控制台。写在消息框上是否得到正确的O/P?不相关,但是考虑使用SqLeTimeMMand的参数属性,而不是简单地串接字符串。这将使您的代码的这一部分对恶意输入更加安全。@Theodoroschatzigannakis:不仅仅是一点安全-更安全。是的,这符合所描述的症状。我会说selectedFishes.Length