【发布时间】:2014-03-21 09:59:36
【问题描述】:
我目前正在尝试建立一个到我们数据库的 sqlconnection,它将返回所有列/行的数据类型(需要这样做,以便我们可以将数据输入 API)。这些数据被放置在一个数据表中,然后通过一个哈希表来获取类型。
问题在于,当程序运行时,没有发生错误,但在控制台写入行中没有返回任何已指定的内容。我不是一个经验丰富的 .net 开发人员,所以我不确定我错过了什么,但我的猜测是按照打开 sql 命令/连接的顺序?
static void Main(string[] args)
{
Hashtable sqlDatatypeholder = new Hashtable();
//Sql Connection
string _mySqlUrl = "connection is correct and works in other test apps";
string _mySqlQuery = "Query is here, it works fine in SQL management studio";
SqlConnection conn = new SqlConnection(_mySqlUrl);
SqlCommand comm = new SqlCommand(_mySqlQuery, conn);
DataTable _tempTable = new DataTable();
using (conn)
{
SqlCommand command = new SqlCommand(_mySqlQuery,conn);
conn.Open();
SqlDataReader reader = command.ExecuteReader();
if (reader.HasRows)
{
while (reader.Read())
{
for (int v = 0; v < _tempTable.Columns.Count; v++)
{
DataColumn dc = _tempTable.Columns[v];
sqlDatatypeholder.Add(dc.ColumnName.ToString(), Convert.ToString(reader.GetSqlValue(v).GetType()));
}
foreach (DictionaryEntry hr in sqlDatatypeholder)
{
Console.WriteLine(hr.Key + " " + hr.Value);
}
}
}
else
{
Console.WriteLine("Connection Open - No rows found.");
}
reader.Close();
}
//Console.WriteLine("Created Sheet " + SmartSheetid);
Console.ReadLine();
}
【问题讨论】:
-
请更有效地格式化您的代码。由于缩进不一致(而且很多缩进需要水平滚动),目前真的很难阅读。
-
您正在定义 _tempTable 然后直接执行
_tempTable.Columns.Count;这将始终为零...所以您的 for 循环将永远不会执行
标签: c# .net datatable hashtable sqlcommand