下面是关于“C# 获取数据库中所有表名、列名的示例代码”的完整攻略,以及两条示例说明。
攻略
获取数据库中所有表名、列名可以利用C#中的数据库元数据操作。可通过ADO.NET提供的DbConnection或DbDataReader对象访问元数据,其方法包括GetSchema等。这些方法可以获取关于数据库架构的信息。
下面是获取MySQL数据库中所有表名的示例代码。
using System.Data;
using MySql.Data.MySqlClient;
// 连接数据库
string connStr = "server=localhost; user=root; database=test; port=3306; password=123456;";
MySqlConnection conn = new MySqlConnection(connStr);
conn.Open();
// 获取数据库中所有表名
DataTable dt = conn.GetSchema("Tables");
foreach (DataRow row in dt.Rows)
{
string tableName = (string)row[2];
Console.WriteLine(tableName);
}
// 关闭数据库连接
conn.Close();
下面是获取SQL Server数据库中所有表名和列名的示例代码。
using System.Data;
using System.Data.SqlClient;
// 连接数据库
string connStr = "server=localhost; user=sa; database=test; password=123456;";
SqlConnection conn = new SqlConnection(connStr);
conn.Open();
// 获取数据库中所有表名
DataTable tables = conn.GetSchema("Tables");
foreach (DataRow tableRow in tables.Rows)
{
string tableName = tableRow[2].ToString();
Console.WriteLine("表名:" + tableName);
// 获取表中所有列名
DataTable columns = conn.GetSchema("Columns", new string[] { null, null, tableName });
foreach (DataRow columnRow in columns.Rows)
{
string columnName = columnRow["COLUMN_NAME"].ToString();
Console.WriteLine("列名:" + columnName);
}
Console.WriteLine();
}
// 关闭数据库连接
conn.Close();
以上代码可适用于 MySQL 或 SQL Server 数据库。
示例说明
示例一
如果你的项目使用的是 MySQL 数据库,可以通过代码获取该数据库中的所有表名。以上面的代码为例,其中关键部分如下。
// 获取数据库中所有表名
DataTable dt = conn.GetSchema("Tables");
foreach (DataRow row in dt.Rows)
{
string tableName = (string)row[2];
Console.WriteLine(tableName);
}
代码中的GetSchema
方法获取到的是数据库中的信息,因此需要传递一个字符串参数来指定获取信息的类型。获取表名信息时,参数值应为"Tables"。返回的结果是一个DataTable
类型的对象,其中包含了所有表的相关信息。我们可以通过循环DataTable
对象中的所有DataRow
获取每一个表的表名,并进行相应的处理。
示例二
如果你的项目使用的是 SQL Server 数据库,可以通过代码获取该数据库中的所有表和列的信息。以上面的代码为例,其中关键部分如下。
// 获取数据库中所有表名
DataTable tables = conn.GetSchema("Tables");
foreach (DataRow tableRow in tables.Rows)
{
string tableName = tableRow[2].ToString();
Console.WriteLine("表名:" + tableName);
// 获取表中所有列名
DataTable columns = conn.GetSchema("Columns", new string[] { null, null, tableName });
foreach (DataRow columnRow in columns.Rows)
{
string columnName = columnRow["COLUMN_NAME"].ToString();
Console.WriteLine("列名:" + columnName);
}
Console.WriteLine();
}
代码中首先获取数据库中的所有表名,然后依次遍历每个表,获取该表中的所有列名。在获取表名信息时,关键代码如下。
DataTable tables = conn.GetSchema("Tables");
foreach (DataRow tableRow in tables.Rows)
{
string tableName = tableRow[2].ToString();
Console.WriteLine("表名:" + tableName);
}
在获取某一个表中的所有列时,关键代码如下。
DataTable columns = conn.GetSchema("Columns", new string[] { null, null, tableName });
foreach (DataRow columnRow in columns.Rows)
{
string columnName = columnRow["COLUMN_NAME"].ToString();
Console.WriteLine("列名:" + columnName);
}
在获取表名信息时,参数值应为"Tables";在获取列名信息时,参数值应为"Columns"。在获取列名信息时,还可以传递一个长度为3的字符串数组,用来指定列名所属的表名。例如上例中的new string[] { null, null, tableName }
,其中第三个参数就是表名。返回的结果是一个DataTable
类型的对象,其中包含了所有列的相关信息。我们可以通过循环DataTable
对象中的所有DataRow
获取每一个列的列名,并进行相应的处理。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C# 获取数据库中所有表名、列名的示例代码 - Python技术站