C#中dataset获取记录的问题
代码如上,我将数据库“task”表中的taskid设置为了主键,且为int型自增。但是该代码返回值为空,row3==null,这是为什么呢?有何解决办法?多谢指教!!...
代码如上,我将数据库“task”表中的taskid设置为了主键,且为int型自增。
但是该代码返回值为空,row3==null,这是为什么呢?有何解决办法?
多谢指教!! 展开
但是该代码返回值为空,row3==null,这是为什么呢?有何解决办法?
多谢指教!! 展开
3个回答
展开全部
首先调试跟踪 dataset.Tables["task"].Rows 是否有行,即是否查出了数据。如果dataset.Tables["task"].Rows.Count > 0, 那么问题应该出现在 DataTable 的主键问题上,虽说你的数据库中设置了 taskId 为主键,但是查出来的 DataSet中的Table默认是没有主键的,因此使用Find方法是找不到数据的。
解决办法:在使用 Find 方法之前,为DataTable设置主键,例如:
DataTable table = dataset.Tables["task"];
table.PrimaryKey = new DataColumn[] { table.Columns["taskid"] };
DataRow row3 = table.Rows.Find(1);
解决办法:在使用 Find 方法之前,为DataTable设置主键,例如:
DataTable table = dataset.Tables["task"];
table.PrimaryKey = new DataColumn[] { table.Columns["taskid"] };
DataRow row3 = table.Rows.Find(1);
展开全部
这里先说明的是dataset.Tables["task"].Rows生成的是数据集对象是一个非类型化数据集,没有关联的模式文件,所以在数据集中的表里面没有主键,虽然在数据库中的表有主键。所以应该手动给数据集中的表添加主键。dataset.Table["task"].PrimaryKey=new DataColumn(){dataset.Tables["task"].columns["taskid"]};
追问
跟主键没关系了。。是我自己失误之前导入dataset的时候没把整个表的数据导入进来,所以那条数据是不存在的。。。多谢回答哈~
追答
首先table.Rows.Find();这个方法是传入你要查找的主键的名称而不是所在的行哦
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
DataRow row3=dataset.Tables["task"].Rows[0];即可,find不是这么用的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询