C# SQLCommand未在Writeline中返回任何内容
我目前正在尝试设置一个到数据库的sqlconnection,它将返回所有列/行的数据类型(这需要完成,以便我们可以将数据输入API)。该数据被放置在datatable中,然后通过哈希表获得类型 问题是,当程序运行时,不会发生错误,但它不会返回控制台写入线中指定的任何内容。我不是一个经验丰富的.net开发人员,所以我不确定我遗漏了什么,但我的猜测是按照sql命令/连接是如何打开的顺序C# SQLCommand未在Writeline中返回任何内容,c#,.net,datatable,hashtable,sqlcommand,C#,.net,Datatable,Hashtable,Sqlcommand,我目前正在尝试设置一个到数据库的sqlconnection,它将返回所有列/行的数据类型(这需要完成,以便我们可以将数据输入API)。该数据被放置在datatable中,然后通过哈希表获得类型 问题是,当程序运行时,不会发生错误,但它不会返回控制台写入线中指定的任何内容。我不是一个经验丰富的.net开发人员,所以我不确定我遗漏了什么,但我的猜测是按照sql命令/连接是如何打开的顺序 static void Main(string[] args) { Hashtable sqlDataty
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();
static void Main(字符串[]args)
{
Hashtable sqlDatatypeholder=新Hashtable();
//Sql连接
string _mySqlUrl=“连接正确,可在其他测试应用程序中使用”;
string\u mySqlQuery=“Query在这里,它在SQL management studio中运行良好”;
SqlConnection conn=新的SqlConnection(_mySqlUrl);
SqlCommand=newsqlcommand(_mySqlQuery,conn);
DataTable _tentable=新DataTable();
使用(康涅狄格州)
{
SqlCommand=newsqlcommand(_mySqlQuery,conn);
conn.Open();
SqlDataReader=command.ExecuteReader();
if(reader.HasRows)
{
while(reader.Read())
{
对于(int v=0;v<_-tentable.Columns.Count;v++)
{
DataColumn dc=_tentiable.Columns[v];
Add(dc.ColumnName.ToString(),Convert.ToString(reader.GetSqlValue(v.GetType()));
}
foreach(字典输入sqlDatatypeholder中的hr)
{
Console.WriteLine(hr.Key+“”+hr.Value);
}
}
}
其他的
{
WriteLine(“连接打开-找不到行”);
}
reader.Close();
}
//Console.WriteLine(“已创建的工作表”+智能工作表ID);
Console.ReadLine();
}您的
\u tentiable
表是空的,您没有填充它,这就是您无法获取任何内容的原因。请尝试此代码,希望它能有所帮助
DataTable _tempTable = new DataTable();
SqlDataAdapter a = new SqlDataAdapter("Your Query",conn);
a.Fill(_tempTable);
您也可以使用此代码,因为它将起作用
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();
_tempTable.Load(reader);
if (_tempTable != null && _tempTable.Rows.Count > 0)
{
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();
}
}
static void Main(字符串[]args)
{
Hashtable sqlDatatypeholder=新Hashtable();
//Sql连接
string _mySqlUrl=“连接正确,可在其他测试应用程序中使用”;
string\u mySqlQuery=“Query在这里,它在SQL management studio中运行良好”;
SqlConnection conn=新的SqlConnection(_mySqlUrl);
SqlCommand=newsqlcommand(_mySqlQuery,conn);
DataTable _tentable=新DataTable();
使用(康涅狄格州)
{
SqlCommand=newsqlcommand(_mySqlQuery,conn);
conn.Open();
SqlDataReader=command.ExecuteReader();
_诱惑。加载(读卡器);
如果(_-tentable!=null&&u-tentable.Rows.Count>0)
{
对于(int v=0;v<_-tentable.Columns.Count;v++)
{
DataColumn dc=_tentiable.Columns[v];
Add(dc.ColumnName.ToString(),Convert.ToString(reader.GetSqlValue(v.GetType()));
}
foreach(字典输入sqlDatatypeholder中的hr)
{
Console.WriteLine(hr.Key+“”+hr.Value);
}
}
其他的
{
WriteLine(“连接打开-找不到行”);
}
reader.Close();
}
}
您的\u tentiable
表是空的,您没有填充它,这就是您无法获取任何内容的原因。请尝试此代码,希望它能有所帮助
DataTable _tempTable = new DataTable();
SqlDataAdapter a = new SqlDataAdapter("Your Query",conn);
a.Fill(_tempTable);
您也可以使用此代码,因为它将起作用
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();
_tempTable.Load(reader);
if (_tempTable != null && _tempTable.Rows.Count > 0)
{
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();
}
}
static void Main(字符串[]args)
{
Hashtable sqlDatatypeholder=新Hashtable();
//Sql连接
string _mySqlUrl=“连接正确,可在其他测试应用程序中使用”;
string\u mySqlQuery=“Query在这里,它在SQL management studio中运行良好”;
SqlConnection conn=新的SqlConnection(_mySqlUrl);
SqlCommand=newsqlcommand(_mySqlQuery,conn);
DataTable _tentable=新DataTable();
使用(康涅狄格州)
{
SqlCommand=newsqlcommand(_mySqlQuery,conn);
conn.Open();
SqlDataReader=command.ExecuteReader();
_诱惑。加载(读卡器);
如果(_-tentable!=null&&u-tentable.Rows.Count>0)
{
对于(int v=0;v<_-tentable.Columns.Count;v++)
{
DataColumn dc=_tentiable.Columns[v];
Add(dc.ColumnName.ToString(),Convert.ToString(reader.GetSqlValue(v.GetType()));
}
foreach(字典输入sqlDatatypeholder中的hr)
{
Console.WriteLine(hr.Key+“”+hr.Value);
}
}
其他的
{
WriteLine(“连接打开-找不到行”);
}
reader.Close();
}
}
我看到了在哈希表中获取值所需的以下更改。注意:异常处理是必须尝试添加的:
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();
_tempTable.Load(reader);
reader.Close();
if (_tempTable != null && _tempTable.Rows.Count > 0)
{
for (int v = 0; v < _tempTable.Columns.Count; v++)
{
DataColumn dc = _tempTable.Columns[v];
sqlDatatypeholder.Add(dc.ColumnName.ToString(), dc.GetType()); //dc.DataType //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.");
}
}
}
static void Main(字符串[]args)
{
Hashtable sqlDatatypeholder=新Hashtable();
//Sql连接
string _mySqlUrl=“连接正确,可在其他测试应用程序中使用”;
string\u mySqlQuery=“Query在这里,它在SQL management studio中运行良好”;
SqlConnection conn=新的SqlConnection(_mySqlUrl);
SqlCommand=newsqlcommand(_mySqlQuery,conn);
DataTable _tentable=新DataTable();
使用(康涅狄格州)
{
SqlCommand=newsqlcommand(_mySqlQuery,conn);
conn.Open();
SqlDataReader=command.ExecuteReader();
_诱惑。加载(读卡器);
reader.Close();
如果(_-tentable!=null&&u-tentable.Rows.Count>0)
{
对于(int v=0;v<\u tentable.Columns.Count;