我正在 Visual Studio 2008 中用 C# 开发一个应用程序。我用它连接了一个 SQL Server 2008 数据库。
我想计算列数,以便我可以循环它们以获取特定数据。
我可以通过访问数据库来计算列,但是我在我的程序中加入了 4-5 个表,所以我想知道我是否可以计算列。
任何人都可以帮助我吗?
谢谢你
我正在 Visual Studio 2008 中用 C# 开发一个应用程序。我用它连接了一个 SQL Server 2008 数据库。
我想计算列数,以便我可以循环它们以获取特定数据。
我可以通过访问数据库来计算列,但是我在我的程序中加入了 4-5 个表,所以我想知道我是否可以计算列。
任何人都可以帮助我吗?
谢谢你
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);
有关更多信息,请参阅此链接。
我在类似情况下所做的是,当我执行查询时,我将所有数据检索到 DataSet 中。
当我得到数据集时,我打开了第一个表 (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);
Probalby 不是最好的方法,但它确实有效。显然,如果字段中包含的数据不是字符串,那么您需要传递适当的类型......
dr.Field<decimal>(requiredColumn)
dr.Field<int>(requiredColumn)
ETC
乔治
阅读器本身会为您提供列数。当您不想知道特定表或视图的行数而是从临时查询中知道时,这很有用。
您可以像这样转储列
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.Smo 2 。编写以下代码
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);
}