gpt4 book ai didi

c# - 是否有一个内置类可以用来解析包含 MySQL 列数据类型的字符串并返回等效的 .NET Type 对象?

转载 作者:行者123 更新时间:2023-11-29 09:01:58 25 4
gpt4 key购买 nike

是否有一个内置类可以用来解析包含 MySQL 列数据类型的字符串并返回等效的 .NET Type 对象?

我想转换一些从表中读取列信息的代码,这样就不必拉回一行数据并从中获取架构信息(使用 OdbcDataAdapter.FillSchema) - 而是该方法发出一个命令不进行表扫描(希望更快)来获取相同的信息。

要替换的现有代码:

        QueryStr.Append("SELECT * FROM ")
.Append("`" + tableName + "`")
.Append(" LIMIT 1 ");

DataTable dsTable = new DataTable();

using (OdbcConnection DbConn = new OdbcConnection(ConnectionStr))
{
OdbcDataAdapter cmd = new OdbcDataAdapter(QueryStr.ToString(), DbConn);

try
{
cmd.FillSchema(dsTable, SchemaType.Mapped);
QuerySuccessful = true;
}

尝试新代码:

        StringBuilder QueryStr = new StringBuilder();
QueryStr.Append("DESCRIBE ")
.Append("`" + tableName + "`");

DataTable dsTable = new DataTable();

try
{
using (OdbcConnection DbConn = new OdbcConnection(connectionStr))
{
DbConn.Open();

OdbcCommand cmd = new OdbcCommand(QueryStr.ToString(), DbConn);


OdbcDataReader odrColumnReader = cmd.ExecuteReader();

while (odrColumnReader.Read())
{
string strColumnName = odrColumnReader.GetString(0);
string strColumnType = odrColumnReader.GetString(1);

// strColumnType is a string containing the type - e.g. char(6) or whatever

Type type = typeof (string); // TODO replace this bit with a conversion of strColumnType

columns.Add( new SQLcolumn(strColumnName, type, tableName));


}

DbConn.Close();
}
}

这样做的问题是我以字符串形式返回 strColumnType - 我想将其转换为 .NET 类型以匹配我从 FillSchema 返回的内容。

我不想编写自己的转换方法[使用此信息http://msdn.microsoft.com/en-us/library/cc668763.aspx ] 如果 FrameWork/ODBC/ADO.NET 中存在。

最佳答案

您可以使用OdbcDataReader.GetFieldType method ,例如:

Type firstColumnType = odrColumnReader.GetFieldType(0);

关于c# - 是否有一个内置类可以用来解析包含 MySQL 列数据类型的字符串并返回等效的 .NET Type 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8357722/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com