【发布时间】:2012-06-11 16:25:06
【问题描述】:
我有一个查询 - “SELECT PK1 FROM users”;
我还有一个名为 myTable 的数据表,其中包含三个 int 类型的字段;
-----------
| myTable |
-----------
| field1 |
| field2 |
| field3 |
-----------
对于从我的查询返回的每一行,我想将 PK1 值放入myTable 中的 field2 中,而 field1 和 field3 为空。
这是迄今为止我尝试过的一些示例代码,但它似乎不起作用。而是将字段 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();
}
}
我的代码是否存在问题,或者是否有其他方法可以映射字段?
这是一个用于此问题的简化示例,因为这样映射字段名称将是理想的,而不是在给定位置插入值。
【问题讨论】:
-
现在是 2012 年,你为什么用
DataTable? -
因为我希望能够将数据存储在内存中并在持久保存到第二个数据库之前进一步对其进行操作。你有更好的建议吗?
-
我还应该补充一点,这是我的第一个 C# 项目,所以任何提示/替代方案都非常受欢迎,因为这对我来说将是一次学习体验。
-
您可以创建一个更好地表示您正在操作的数据的类,并使用某种类型的 ORM (NHibernate) 来持久化更改。
-
你能举个例子说明我将如何创建类和对象吗?
标签: c# datatable sqldataadapter columnmappings