【发布时间】:2016-03-27 13:33:45
【问题描述】:
我想从 Mysql 数据库中获取包含完整详细信息的列架构。
我有两个表,其中客户表架构类似于
而另一个表Orders表架构是这样的
我想获取与我的联接查询相关的这些列架构
using (MySqlConnection myConnection = new MySqlConnection("Server=xxxx;Uid=is;Pwd=password;Database=mydatabse"))
{
using (MySqlCommand cmd = new MySqlCommand("SELECT a.CustomerID, a.PostalCode, b.Freight, b.ShippedDate
FROM orders b, customers a
WHERE a.CustomerID = b.CustomerID Limit 5;", myConnection))
{
myConnection.Open();
using (MySqlDataReader mdr = cmd.ExecuteReader())
{
DataSet ds = new DataSet();
ds.Tables.Add("Customers");
mdr.Read();
DataRow dr;
dt.Columns.Add("ColName");
dt.Columns.Add("ColType");
for (int k = 0; k <= mdr.FieldCount - 1; k++)
{
dr = dt.NewRow();
dr["ColName"] = mdr.GetName(k);
dr["ColType"] = mdr.GetDataTypeName(k);
dt.Rows.Add(dr);
}
}
}
}
我需要我在连接查询中使用的所选列的完整详细架构。
我使用GetDataTypeName() 检索列类型,但它只返回数据类型。
我找到了这个查询
select * from INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'nsightsmysqldata' AND TABLE_NAME = 'customers';
它返回与该表相关的所有详细信息,但我只需要我在上面的联接查询中使用的那些列详细信息。
请提供可能的解决方案。
【问题讨论】:
-
不,您无法以这种方式获取架构信息。您可能会做的是:获取整个架构并将其存储在内存对象中,并根据您的查询(列),您可以操作架构并获取所需的信息。
-
顺便说一句,不要发布图片,而是包含更具可读性的文本模式。
-
另外,请勿使用数据库凭据发布您的代码!
标签: c# mysql information-schema