通过 SQL 或 OLEDB 找出 Access 表的哪些列是自动递增的?
Finding out through SQL or OLEDB which of an Access tables' columns is autoincremented?
我需要找到所有的多主键或非自增主键,使它们成为普通键,并使主键成为自增列。但是我需要检查是否已经有一个自动增量列,所以我将其设为主键,以防万一。
OleDbReader 有一个 GetSchemaTable 方法。您可以使用每个 table 的基本 select 来调用它,然后遍历返回的列并检查 IsAutoIncrement。
https://msdn.microsoft.com/en-us/library/system.data.oledb.oledbdatareader.getschematable(v=vs.110).aspx
根据 Microsoft 关于 How To Retrieve Column Schema by Using the DataReader GetSchemaTable Method and Visual C# .NET 的这篇文章,我编写了一些代码供您选择自动增量设置为 True
、
的字段
OleDbConnection cn = new OleDbConnection();
OleDbCommand cmd = new OleDbCommand();
DataTable schemaTable;
OleDbDataReader myReader;
//Open a connection to the SQL Server Northwind database.
cn.ConnectionString = "...";
cn.Open();
//Retrieve records from the Employees table into a DataReader.
cmd.Connection = cn;
cmd.CommandText = "SELECT * FROM Employees";
myReader = cmd.ExecuteReader(CommandBehavior.KeyInfo);
//Retrieve column schema into a DataTable.
schemaTable = myReader.GetSchemaTable();
var myAutoIncrements = schemaTable.Rows.Cast<DataRow>().Where(
myField => myField["IsAutoIncrement"].ToString() == "True");
foreach (var myAutoInc in myAutoIncrements)
{
Console.WriteLine((myAutoInc[0]));
}
Console.ReadLine();
//Always close the DataReader and connection.
myReader.Close();
cn.Close();
您只需将其粘贴到您的应用程序或什至是新的控制台应用程序,然后查看显示字段的结果,其中 IsAutoIncrement
设置为 true
。
我需要找到所有的多主键或非自增主键,使它们成为普通键,并使主键成为自增列。但是我需要检查是否已经有一个自动增量列,所以我将其设为主键,以防万一。
OleDbReader 有一个 GetSchemaTable 方法。您可以使用每个 table 的基本 select 来调用它,然后遍历返回的列并检查 IsAutoIncrement。 https://msdn.microsoft.com/en-us/library/system.data.oledb.oledbdatareader.getschematable(v=vs.110).aspx
根据 Microsoft 关于 How To Retrieve Column Schema by Using the DataReader GetSchemaTable Method and Visual C# .NET 的这篇文章,我编写了一些代码供您选择自动增量设置为 True
、
OleDbConnection cn = new OleDbConnection();
OleDbCommand cmd = new OleDbCommand();
DataTable schemaTable;
OleDbDataReader myReader;
//Open a connection to the SQL Server Northwind database.
cn.ConnectionString = "...";
cn.Open();
//Retrieve records from the Employees table into a DataReader.
cmd.Connection = cn;
cmd.CommandText = "SELECT * FROM Employees";
myReader = cmd.ExecuteReader(CommandBehavior.KeyInfo);
//Retrieve column schema into a DataTable.
schemaTable = myReader.GetSchemaTable();
var myAutoIncrements = schemaTable.Rows.Cast<DataRow>().Where(
myField => myField["IsAutoIncrement"].ToString() == "True");
foreach (var myAutoInc in myAutoIncrements)
{
Console.WriteLine((myAutoInc[0]));
}
Console.ReadLine();
//Always close the DataReader and connection.
myReader.Close();
cn.Close();
您只需将其粘贴到您的应用程序或什至是新的控制台应用程序,然后查看显示字段的结果,其中 IsAutoIncrement
设置为 true
。