我想把数据库中的数据读出,存放在集合里,访问时可以简单点
/// <summary>
/// 根据任务状态获取任务集合
/// </summary>
/// <param name="OkOrNot">任务的状态</param>
/// <returns>这个状态的任务集合</returns>
private Collection<Class_task> GetTaskbyOkOrNot(string okornot)
{
Collection<Class_task> task = new Collection<Class_task>(); using (SqlConnection conn = new SqlConnection(ConnectionString))
{
conn.Open(); using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = "select * from T_Task where OkOrNot='true' ";
//cmd.Parameters.Add(new SqlParameter("@okornot",SqlDbType.Char,6,okornot)); using (SqlDataReader read = cmd.ExecuteReader())
{
while (read.Read())
{
Class_task newTask = new Class_task();
//读出任务 newTask.TaskName = read.GetString(read.GetOrdinal("Name"));
newTask.Source = read.GetString(read.GetOrdinal("source"));
newTask.Goal = read.GetString(read.GetOrdinal("goal"));
newTask.StartTime = read.GetDateTime(read.GetOrdinal("StartTime"));
newTask.OverTime = read.GetDateTime(read.GetOrdinal("OverTime"));
//把任务加到集合中
task.Add(newTask);
}
}
}
return task;
}
}
但当我调用的集合里的数据时,就会报错:“未将对象引用设置到对象的实例”;是不是集合里的对象没有实例化?可是要是实例化的话,还不能用循环实例化,不然,也提示“未将对象引用设置到对象的实例”。原以为用集合会简单方便点呢。。求帮助
/// <summary>
/// 根据任务状态获取任务集合
/// </summary>
/// <param name="OkOrNot">任务的状态</param>
/// <returns>这个状态的任务集合</returns>
private Collection<Class_task> GetTaskbyOkOrNot(string okornot)
{
Collection<Class_task> task = new Collection<Class_task>(); using (SqlConnection conn = new SqlConnection(ConnectionString))
{
conn.Open(); using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = "select * from T_Task where OkOrNot='true' ";
//cmd.Parameters.Add(new SqlParameter("@okornot",SqlDbType.Char,6,okornot)); using (SqlDataReader read = cmd.ExecuteReader())
{
while (read.Read())
{
Class_task newTask = new Class_task();
//读出任务 newTask.TaskName = read.GetString(read.GetOrdinal("Name"));
newTask.Source = read.GetString(read.GetOrdinal("source"));
newTask.Goal = read.GetString(read.GetOrdinal("goal"));
newTask.StartTime = read.GetDateTime(read.GetOrdinal("StartTime"));
newTask.OverTime = read.GetDateTime(read.GetOrdinal("OverTime"));
//把任务加到集合中
task.Add(newTask);
}
}
}
return task;
}
}
但当我调用的集合里的数据时,就会报错:“未将对象引用设置到对象的实例”;是不是集合里的对象没有实例化?可是要是实例化的话,还不能用循环实例化,不然,也提示“未将对象引用设置到对象的实例”。原以为用集合会简单方便点呢。。求帮助
解决方案 »
- [急求] C# Winform 不间断走马灯,多行文本,并且需要英文中文(36Px大字体)隔行循环
- Request["YS_ID"]获得不到GridView 中行主键值?
- C#与Notes的问题
- 如何处理全文搜索中的这个问题?
- 请教:如何将XML字符串直接读入dataset,而不从文件读取
- 奇怪的參數傳遞問題,高手請盡,在線等待 ..................
- .Net 的csc.exe文件可以对.cs文件编译,那怎么对整个.sln,即整个解决方案都编译一下呢?
- 100分求《Microsoft Windows User Experience》中文版!
- 求助
- 谁有可以编辑*.cur光标文件的资源编辑器.麻烦传一个
- 到配置文件的时候,就找不到错误了!
- 求能为这个网页用webbrowser填充textarea的代码
taskList = GetTaskbyOkOrNot("true"); for (int i = 0; i < taskList.Count; i++)
{
MessageBox.Show(taskList[i].TaskName + "\n" + taskList[i].Source);
}
taskList = GetTaskbyOkOrNot("true");
此处加断点跟到方法里面去看一下 光看代码看不出你写的有什么问题
{
Class_task newTask = new Class_task();
//读出任务
newTask.TaskName = read.GetString(read.GetOrdinal("Name"));
newTask.Source = read.GetString(read.GetOrdinal("source"));
newTask.Goal = read.GetString(read.GetOrdinal("goal"));
newTask.StartTime = read.GetDateTime(read.GetOrdinal("StartTime"));
newTask.OverTime = read.GetDateTime(read.GetOrdinal("OverTime"));
//把任务加到集合中
task.Add(newTask);
}语句执行后,对象的属性值依然为null,我找下原因
string name = (string)read["Name"];
newTask.TaskName = (string)read["Name"];执行后,name有值,而newTask.TaskName的值依旧为null......
/// 根据任务状态获取任务集合
/// </summary>
/// <param name="OkOrNot">任务的状态</param>
/// <returns>这个状态的任务集合</returns>
private List<Class_task> GetTaskbyOkOrNot(string okornot)
{
List<Class_task> task = new List<Class_task>(); using (SqlConnection conn = new SqlConnection(ConnectionString))
{
conn.Open(); using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = "select * from T_Task where OkOrNot='true' ";
//cmd.Parameters.Add(new SqlParameter("@okornot",SqlDbType.Char,6,okornot)); using (SqlDataReader read = cmd.ExecuteReader())
{
while (read.Read())
{
Class_task newTask = new Class_task();
//读出任务
newTask.TaskName = read["Name"].ToString();
newTask.Source = read["source"].ToString(); read.GetString(read.GetOrdinal("source"));
newTask.Goal = read["goal"].ToString(); read.GetString(read.GetOrdinal("goal"));
newTask.StartTime = DateTime.Parse(read["StartTime"].ToString());
newTask.OverTime = DateTime.Parse(read["OverTime"].ToString());
//把任务加到集合中
task.Add(newTask);
}
}
}
return task;
}
}
public string Source
{
get { return source; }
set { source = Source; }
}把value写成了属性,造成无论赋值什么,都不能给字段赋值,返回的都是字段的初始值null...
谢谢大家了