Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# SQLCommand未在Writeline中返回任何内容_C#_.net_Datatable_Hashtable_Sqlcommand - Fatal编程技术网

C# SQLCommand未在Writeline中返回任何内容

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

我目前正在尝试设置一个到数据库的sqlconnection,它将返回所有列/行的数据类型(这需要完成,以便我们可以将数据输入API)。该数据被放置在datatable中,然后通过哈希表获得类型

问题是,当程序运行时,不会发生错误,但它不会返回控制台写入线中指定的任何内容。我不是一个经验丰富的.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();
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;