C# sqldataadapter datatablemapping

本文关键字:datatablemapping sqldataadapter | 更新日期: 2023-09-27 18:36:59

我有一个查询 - " SELECT PK1 FROM users ";

我还有一个名为 myTable 的数据表,其中包含三个 int 类型的字段;

-----------
| myTable |
-----------
| field1  |
| field2  |
| field3  |
-----------

对于从查询返回的每一行,我想将 PK1 值放入字段 2 中,myTable留下字段 1 和字段 3 为空。

这是我到目前为止尝试过的一些示例代码,但它似乎不起作用。相反,字段 PK1 将作为新字段追加到myTable末尾。

class Program
    {
        static void Main(string[] args)
        {
            string SQL = "SELECT PK1 FROM users";
            SqlConnection connection = new SqlConnection([my connection string]);
            DataTable myTable = new DataTable();
            SqlDataAdapter adapter = new SqlDataAdapter();
            adapter.SelectCommand = new SqlCommand(SQL, connection);
            myTable.Columns.Add("field1", typeof(Int32));
            myTable.Columns.Add("field2", typeof(Int32));
            myTable.Columns.Add("field3", typeof(Int32));
            DataTableMapping dataMapping = adapter.TableMappings.Add("myTable", "users");
            dataMapping.ColumnMappings.Add("PK1", "field2");
            adapter.Fill(myTable);
            foreach (DataRow row in myTable.Rows)
            {
                Console.WriteLine("------------");
                foreach (DataColumn column in myTable.Columns)
                {
                    Console.WriteLine(column.ColumnName + " : " + row[column]);
                }
            }

            Console.ReadKey();
        }
    }

我的代码中是否存在问题,或者是否有其他方法可以映射字段?

出于此问题的目的,这是一个简化的示例,因为这样映射字段名称将是理想的,而不是在给定位置插入值。

C# sqldataadapter datatablemapping

我认为如果这是您的要求,那么这种方法没有错。将查询更改为以下内容,并且不需要映射。

string SQL = "SELECT PK1 as field2 FROM users";

它正在添加列,因为您告诉它这样做。您应该使用 datamappingColumn 功能或 table.column.add 功能,而不是两者兼而有之,它们是多余的,可能不是必需的。

所以如果你离开table.column.add()

下面是如何将列名"绑定"到表中设置的列的示例,指定希望它们出现的顺序,可以通过"双引号将它们留空或使用 NULL 将它们设置为 null。

this.table.AutoSetDataBoundColumnHeaders = true;this.table.SetDataBinding(table, null, "PK1", null);

相关文章:
  • 没有找到相关文章