C#中如何判断SQLServer数据库列是否自增?我需要能够从DbConnection.GetSchema()返回的数据表中确定SQLServer表中的特定列是否是标识/自动增量。我不能直接查询系统表。奇怪的是,如果我通过ODBC连接到SQLServer,返回的此类列的数据类型返回为“intidentity”(或“bigintidentity”等),但如果我使用本机SQLServer驱动程序,似乎没有区别是在“int”列和“intidentity”列之间制作。还有其他方法可以推断出这些信息吗?DataTable有一个Columns属性,而DataColumn有一个指示自动增量的属性:boolisAutoIncrement=dataTable.Columns[iCol].AutoIncrement请参阅此StackOverflow线程GetSchema()函数不返回您想要的内容。也不会检查DataTable架构属性。您将不得不进入较低级别,这取决于DBMS及其版本。下面的成员检索所有具有标识列的表,然后查找与作为参数传递的特定表的匹配项。可以修改代码以返回所有表或优化查询以仅查看感兴趣的表。//请参阅:https://stackoverflow.com/questions/87747/how-do-you-determine-what-sql-tables-have-an-identity-column-programaticallyprivatestaticstringGetIdentityColumnName(SqlConnectionsqlConnection,Tupletable){stringcolumnName=string.Empty;conststringcommandString="selectTABLE_SCHEMA,TABLE_NAME,COLUMN_NAMEfromINFORMATION_SCHEMA.COLUMNS"+"其中TABLE_SCHEMA='dbo'andCOLUMNPROPERTY(object_id(TABLE_NAME),COLUMN_NAME,'IsIdentity')=1"+"orderbyTABLE_NAME";数据集dataSet=newDataSet();SqlDataAdaptersqlDataAdapter=newSqlDataAdapter();sqlDataAdapter.SelectCommand=newSqlCommand(commandString,sqlConnection);sqlDataAdapter.Fill(数据集);if(dataSet.Tables.Count>0&&dataSet.Tables[0].Rows.Count>0){foreach(DataRowrowindataSet.Tables[0].Rows){//首先比较名称if(string.Compare(table.Item2,row[1]asstring,true)==0){//如果模式是指定的,我们也需要匹配它if(string.IsNullOrWhiteSpace(table.Item1)||string.Compare(table.Item1,row[0]asstring)==0){columnName=row[2]asstring;休息;}}}}返回列名;据我所知,我遇到了同样的问题,“自动增量列的实现方式因您使用的数据库类型而异。它不会通过GetOleDbSchema公开。”我没有找到任何其他方式,然后提到了“kelloti”。所以目前我对这个解决方案很好,因为目前我需要知道该列是否是AutoIncrement我已经在内存中有表所以我不需要再次查询数据库。(我会把我的评论作为评论,但我还不能发表评论,所以我希望我不要把它搞砸了。。。)以上是C#学习教程:如何判断一个SQLServer数据库列在C#增量中是自动的吗?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
