C#中dataset获取记录的问题

代码如上,我将数据库“task”表中的taskid设置为了主键,且为int型自增。但是该代码返回值为空,row3==null,这是为什么呢?有何解决办法?多谢指教!!... 代码如上,我将数据库“task”表中的taskid设置为了主键,且为int型自增。
但是该代码返回值为空,row3==null,这是为什么呢?有何解决办法?
多谢指教!!
展开
 我来答
Octavianus_PL
2013-03-27 · TA获得超过388个赞
知道小有建树答主
回答量:168
采纳率:0%
帮助的人:174万
展开全部
首先调试跟踪 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);
百度网友fc9fa9c
2013-03-27 · TA获得超过363个赞
知道小有建树答主
回答量:184
采纳率:0%
帮助的人:168万
展开全部
这里先说明的是dataset.Tables["task"].Rows生成的是数据集对象是一个非类型化数据集,没有关联的模式文件,所以在数据集中的表里面没有主键,虽然在数据库中的表有主键。所以应该手动给数据集中的表添加主键。dataset.Table["task"].PrimaryKey=new DataColumn(){dataset.Tables["task"].columns["taskid"]};
追问
跟主键没关系了。。是我自己失误之前导入dataset的时候没把整个表的数据导入进来,所以那条数据是不存在的。。。多谢回答哈~
追答
首先table.Rows.Find();这个方法是传入你要查找的主键的名称而不是所在的行哦
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
fej121121
2013-03-27 · TA获得超过651个赞
知道小有建树答主
回答量:655
采纳率:66%
帮助的人:537万
展开全部
DataRow row3=dataset.Tables["task"].Rows[0];即可,find不是这么用的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式