向dataTable中添加数据时附带主键信息

最近在做项目的时候遇到一个问题,需要将原有的数据取出后装进dataTable中,但在操作dataTable中发现又需要数据的主键信息,利于dataTable的PrimaryKey属性根本就拿不到主键值。最后通过查阅资料发现,当要把数据拿出来的时候需要设置拿出数据附带主键属性(不知道这么说跟时间原理是不是有偏差),具体步骤记录如下,以备后续参考:

 using (SqlConnection conn = new SqlConnection(CAppCfg.cnStrs))
                            {
                                conn.Open();
                                using (SqlCommand command = conn.CreateCommand())
                                {

                                        try
                                        {
                                            command.CommandText = sqlstrs;
                                            using (SqlDataAdapter adp = new SqlDataAdapter(command))
                                            {
                                                adp.MissingSchemaAction = MissingSchemaAction.AddWithKey;
                                                adp.Fill(dt_upload);
                                            }
                                        }
                                        catch (Exception er)
                                        {
                                            throw new Exception(er.Message);
                                        }
                                 
                                }
                            }

这样再利用dataTable的PrimaryKey属性就能拿到此数据信息中的主键信息了。

查阅剩余功能:MissingSchemaAction 

Add:在填充数据集的时候直接累加过来,没有指定主键关系(默认值)

AddWithKey:从数据源中我们可以得到哪一个键是主键,然后根据主键进行填充,不会出现主键重复的情况,一般选择这种方式,当然这种方式有主键的检查。对于非类型化数据集格外重要

Error:如果选择这个选项,当填充UnTyped DataSet的时候,由于UnTypedDataSet没有数据结构,此时会报错

          抛出一个InvalidOperationException:  Missing the 'Table' DataTable for the 'Table' SourceTable.

Ignore:忽略,也就是架构不存在的情况下,数据填充会被忽略掉。由于Untyped DataSet 没有架构,此时 就会忽略填充,

猜你喜欢

转载自www.cnblogs.com/linweimu/p/11123218.html
今日推荐