如何计算SQL Server 2008的列数';s表使用C#

本文关键字:何计算 计算 2008 Server SQL | 更新日期: 2023-09-27 17:58:23

我正在Visual Studio 2008中用C#开发一个应用程序。我用它连接了一个SQL Server 2008数据库。

我想计算列的数量,这样我就可以循环使用它们来获得特定的数据。

我可以通过访问数据库来计算列数,但我在程序中连接了4-5个表,所以我想知道我是否可以计算列数。

有人能帮我吗?

谢谢Shyam

如何计算SQL Server 2008的列数';s表使用C#

select count(*) from INFORMATION_SCHEMA.columns where TABLE_NAME = 'YourTableName'

类似的东西?

SELECT COUNT(*)
FROM sys.columns c 
INNER JOIN sys.tables t ON c.object_id = t.object_id
WHERE t.name = 'yourTable'

请参阅TaronPro提供的此页面,了解如何检索结果。

如果您使用SQLConnection对象连接到DB,请使用其GetSchema方法来获取所有列的列表,而无需查询。

    using (SqlConnection connection = new SqlConnection(connectionString))
   {
       // Connect to the database then retrieve the schema information.
       connection.Open();
       DataTable table = connection.GetSchema("Tables");
        ..
        ..
        ..

若要了解特定所有者、表或表类型的列,请使用GetSchema方法中的限制。

    string[] restrictions = new string[4];
    restrictions[1] = "dbo";
    DataTable table = connection.GetSchema("Tables", restrictions);

有关更多信息,请参阅此链接。

我在类似情况下所做的是,当我执行查询时,我将所有数据检索到数据集中。

当我得到数据集时,我打开了第一个表(ds.Tables[0])。显然,你首先要检查是否存在。

当你有了表格,它就像执行一样简单

dt.Columns.Count;

汇总DS.Tables[0].Columns.Count要按名称查找特定列,请循环查找

for (z=0; z < dt.Columns.Count; z++)
{
  // check to see if the column name is the required name passed in.
  if (dt.Columns[z].ColumnName == fieldName)
  {
    // If the column was found then retrieve it 
    //dc = dt.Columns[z];
    // and stop looking the rest of the columns
    requiredColumn = z;
    break;
 }

}

然后,为了找到所需的数据,我会循环遍历表中的行,并获得该列的字段。。。即…

string return = dr.Field<string>(requiredColumn);

这可能不是最好的方法,但它有效。显然,如果字段中包含的数据不是字符串,则需要传递适当的类型。。。

dr.Field<decimal>(requiredColumn)
dr.Field<int>(requiredColumn) 

etc

RgdsGeorge

阅读器本身会为您提供列数。当您不想知道特定表或视图的行数,而是想从特定查询中知道时,这很有用。

你可以像这个一样转储列

string sql = "SELECT * FROM my query";
SqlCommand cmd = new SqlCommand(sql, connection);
using (SqlDataReader reader = cmd.ExecuteReader()) {
    while (reader.Read()) {
        for (int i = 0; i < reader.FieldCount; i++) {
            Console.WriteLine("{0} = {1}",
                              reader.GetName(i),
                              reader.IsDBNull(i) ? "NULL" : reader.GetValue(i));
        }
        Console.WriteLine("---------------");
    }
}

您可以使用Microsoft.SqlServer.Management.Smo名称空间来获取指定表中的列数,如下所示1.在项目中添加Microsoft.SqlServer.Management.Smo dll,并使用命名空间Microsoft.SqlServer_Management.Smo2.编写以下代码

private int colCount()
{
      Server server=new Server(".''SQLEXPRESS");
      Database database=Server.Databases["your database name"];
      Table table=database.Tables["your table name"];
      return (table.Columns.Count);
}