如何计算SQL Server 2008的列数';s表使用C#
本文关键字:何计算 计算 2008 Server SQL | 更新日期: 2023-09-27 17:58:23
我正在Visual Studio 2008中用C#开发一个应用程序。我用它连接了一个SQL Server 2008数据库。
我想计算列的数量,这样我就可以循环使用它们来获得特定的数据。
我可以通过访问数据库来计算列数,但我在程序中连接了4-5个表,所以我想知道我是否可以计算列数。
有人能帮我吗?
谢谢Shyam
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);
}