C# C sqldataadapter datatablemapping
我有一个查询-从用户中选择PK1 我还有一个名为myTable的datatable,其中有三个int类型的字段C# C sqldataadapter datatablemapping,c#,datatable,sqldataadapter,columnmappings,C#,Datatable,Sqldataadapter,Columnmappings,我有一个查询-从用户中选择PK1 我还有一个名为myTable的datatable,其中有三个int类型的字段 ----------- | myTable | ----------- | field1 | | field2 | | field3 | ----------- 对于查询返回的每一行,我希望将PK1值放入myTable中的field2中,将field1和field3保留为null 这里有一些我到目前为止尝试过的示例代码,但它似乎不起作用。相反,字段PK1作为一个新字段追加到my
-----------
| myTable |
-----------
| field1 |
| field2 |
| field3 |
-----------
对于查询返回的每一行,我希望将PK1值放入myTable中的field2中,将field1和field3保留为null
这里有一些我到目前为止尝试过的示例代码,但它似乎不起作用。相反,字段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();
}
}
我的代码中是否存在问题,或者是否有其他方法可以映射字段
就本问题而言,这是一个简化的示例,因为映射字段名比在给定位置插入值更理想。它添加列是因为您告诉它。您应该使用datamappingColumn功能或table.column.add功能。并非两者都使用,它们是冗余的,可能不是必需的 因此,如果您离开table.column.add 下面是一个如何将列名绑定到表中设置的列的示例,您可以指定它们的显示顺序,也可以使用双引号将它们保留为空,或者使用null将它们设置为null this.table.AutoSetDataBoundColumnHeaders=true;
this.table.SetDataBindingtable,null,PK1,null 我认为,如果这是您的要求,那么这种方法没有错。 将查询更改为以下内容,则不需要映射
string SQL = "SELECT PK1 as field2 FROM users";
现在是2012年,为什么要使用DataTable?因为我希望能够将数据存储在内存中,并在持久化到第二个DB之前对其进行进一步操作。你有更好的建议吗?我还应该补充一点,这是我的第一个C项目,因此任何提示/备选方案都非常受欢迎,因为这对我来说将是一次学习经历。你可以创建一个类,更好地表示你正在操作的数据,并使用某种类型的ORM来持久化更改。你能给我一个我将如何创建类和对象?DataTable似乎没有这两种方法中的任何一种?Hi-Asif,谢谢-但是问题是我想在field2中插入PK1的值。然而,我的代码将所有三个字段都保留为空,并在我的DataTable末尾添加了一个新的PK1字段感谢Asif-使用它作为解决方法将非常好。谢谢