Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# OLEDB:如何使用数据集对数据库表的列重新排序?_C#_Dataset_Oledb_Commit - Fatal编程技术网

C# OLEDB:如何使用数据集对数据库表的列重新排序?

C# OLEDB:如何使用数据集对数据库表的列重新排序?,c#,dataset,oledb,commit,C#,Dataset,Oledb,Commit,我知道这可能有点尴尬,但我正在尝试用OLEDB修改C中MS Access数据库中某些列的顺序。如何提交数据集中datatable列顺序的特定更改?如果不可能,我如何使用数据集对数据库表的列重新排序 以下是我在C语言中的示例: command.Connection = conn; command.CommandText = tableName; command.CommandType = CommandType.TableDirect; adapter = new OleDbDataAdapter

我知道这可能有点尴尬,但我正在尝试用OLEDB修改C中MS Access数据库中某些列的顺序。如何提交数据集中datatable列顺序的特定更改?如果不可能,我如何使用数据集对数据库表的列重新排序

以下是我在C语言中的示例:

command.Connection = conn;
command.CommandText = tableName;
command.CommandType = CommandType.TableDirect;
adapter = new OleDbDataAdapter(command);
dataset = new DataSet(tableName);
adapter.Fill(dataset, tableName);
dataset.Tables[0].Columns[dataset.Tables[0].Columns.Count-1].SetOrdinal(CB_PositionCol.SelectedIndex);
dataset.Tables[0].AcceptChanges();
AcceptChanges似乎不适合我想要做的事情,因为我相信它只提交数据行中的更改


谢谢你的帮助

将ALTER TABLE语句与OLEDBC命令一起使用。DataSet、DataTable和DataTableAdapters对于数据的底层结构是透明的。实际上,您可以使用表适配器来转换来自两种不同结构的数据


因此,基本上我必须将每一列从我要插入的位置删除到最后一列,并为我删除的列添加新列?不幸的是,您还可以创建一个新表。传输数据,删除旧表,将新表改回旧表名称,然后压缩/修复。。。很有趣,但它会起作用。为什么需要对列进行重新排序这几乎就是从用户界面对列进行重新排序时,对用户透明的情况。减去压缩/修复如果您想以特定方式查看列,您可以更改SELECT语句、DataView中的顺序,或允许在UI中对列重新排序。我需要将列从应用程序动态添加到MS Access表中,并且我希望用户能够插入到他们想要的位置。另外,我希望MS Access中的列顺序与我的应用程序相同。我不希望应用程序的用户每次打开应用程序时都必须选择列的顺序。您需要以ExecuteOnQuery的形式运行ALTER/CREATE命令,而不是在DataAdapter上使用Fill/Update命令