Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.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# 在控制台应用程序中使用数据集?_C#_Sql - Fatal编程技术网

C# 在控制台应用程序中使用数据集?

C# 在控制台应用程序中使用数据集?,c#,sql,C#,Sql,我试图弄清楚如何显示我(应该)从SQL查询中获得的信息。这是我的代码: this.cmd = connection.CreateCommand(); this.cmd.CommandText = "SELECT * FROM servers WHERE id > " + x + " AND id < " + y; this.adapter = new MySqlDataAdapter( this.cmd ); this.

我试图弄清楚如何显示我(应该)从SQL查询中获得的信息。这是我的代码:

        this.cmd = connection.CreateCommand();
        this.cmd.CommandText = "SELECT * FROM servers WHERE id > " + x + " AND id < " + y;
        this.adapter = new MySqlDataAdapter( this.cmd );
        this.adapter.SelectCommand = this.cmd;
        this.dataset = new DataSet();
        this.adapter.Fill( dataset );
        return this.dataset;
this.cmd=connection.CreateCommand();
this.cmd.CommandText=“从id>“+x+”和id<”+y的服务器中选择*;
this.adapter=新的MySqlDataAdapter(this.cmd);
this.adapter.SelectCommand=this.cmd;
this.dataset=新数据集();
this.adapter.Fill(数据集);
返回此.dataset;

当我使用控制台应用程序时,如何使用this.dataset显示信息?谢谢

这是一个令人惊讶的复杂问题(但很简单)。他们使用的收集类很难使用。我提出了一个基本的实现。它不尝试在正确的列中排列行值,但输出比Juran的要好一点

foreach (DataTable table in dataSet.Tables)
{
    foreach (DataRow row in table.Rows)
    {
        foreach (DataColumn column in table.Columns)
        {
            object item = row[column];
            // read column and item
            Console.WriteLine("item ", item );
        }
    }
}
主要答案在
ToPrettyString()
扩展方法中。由于框架中的缺陷,大多数其他扩展方法只是为了简化工作

using System;
using System.Collections.Generic;
using System.Data;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            var ds = new DataSet();
            var customersTable = ds.Tables.Add("Customers");
            customersTable.Columns.AddRange("FirstName", "LastName", "Id", "Address");
            customersTable.Rows.Add("Bob", "Sagget", 1, "123 Mockingbird Lane");
            customersTable.Rows.Add("John", "Doe", 2, "1600 Pennsylvanie Ave");
            customersTable.Rows.Add("Jane", "Doe", 3, "100 Main St");

            Console.WriteLine(ds.ToPrettyString());
            Console.WriteLine("Press any key to exit.");
            Console.ReadKey();
        }
    }

    static class ExtensionMethods
    {    
        public static string ToPrettyString(this DataSet ds)
        {
            var sb = new StringBuilder();
            foreach (var table in ds.Tables.ToList())
            {
                sb.AppendLine("--" + table.TableName + "--");
                sb.AppendLine(String.Join(" | ", table.Columns.ToList()));
                foreach (DataRow row in table.Rows)
                {
                    sb.AppendLine(String.Join(" | ", row.ItemArray));
                }
                sb.AppendLine();
            }
            return sb.ToString();
        }

        public static void AddRange(this DataColumnCollection collection, params string[] columns)
        {
            foreach (var column in columns)
            {
                collection.Add(column);
            }
        }       

        public static List<DataTable> ToList(this DataTableCollection collection)
        {
            var list = new List<DataTable>();
            foreach (var table in collection)
            {
                list.Add((DataTable)table);
            }
            return list;
        }

        public static List<DataColumn> ToList(this DataColumnCollection collection)
        {
            var list = new List<DataColumn>();
            foreach (var column in collection)
            {
                list.Add((DataColumn)column);
            }
            return list;
        }
    }
}
使用系统;
使用System.Collections.Generic;
使用系统数据;
使用系统文本;
命名空间控制台应用程序1
{
班级计划
{
静态void Main(字符串[]参数)
{
var ds=新数据集();
var customersTable=ds.Tables.Add(“客户”);
customersTable.Columns.AddRange(“FirstName”、“LastName”、“Id”、“Address”);
customersTable.Rows.Add(“Bob”,“Sagget”,1,“123模仿鸟巷”);
customersTable.Rows.Add(“John”,“Doe”,2,“1600宾夕法尼亚大道”);
customersTable.Rows.Add(“Jane”,“Doe”,3,“100 Main St”);
Console.WriteLine(ds.ToPrettyString());
控制台。WriteLine(“按任意键退出”);
Console.ReadKey();
}
}
静态类扩展方法
{    
公共静态字符串ToPrettyString(此数据集为ds)
{
var sb=新的StringBuilder();
foreach(ds.Tables.ToList()中的var表)
{
sb.附录行(“--”+table.TableName+“--”);
sb.AppendLine(String.Join(“|”,table.Columns.ToList());
foreach(table.Rows中的DataRow行)
{
sb.AppendLine(String.Join(“|”,row.ItemArray));
}
(某人);
}
使某人返回字符串();
}
公共静态void AddRange(此DataColumnCollection集合,参数字符串[]列)
{
foreach(列中的var列)
{
集合。添加(列);
}
}       
公共静态列表列表(此DataTableCollection集合)
{
var list=新列表();
foreach(集合中的var表)
{
列表.添加((数据表)表);
}
退货清单;
}
公共静态列表列表(此DataColumnCollection集合)
{
var list=新列表();
foreach(集合中的var列)
{
列表。添加((数据列)列);
}
退货清单;
}
}
}
输出:

--顾客--

名|姓| Id |地址

Bob | Sagget | 1 | 123模仿鸟巷

约翰|多伊| 2 | 1600宾夕法尼亚大道

简|多伊| 3 | 100大街


查询结果将位于数据集中的第一个表(也是唯一的表)中。简单地拿第一个表,循环抛出行,打印出数据。我不完全理解如何做到这一点,你有一个例子吗?看看这篇文章,看看这是否有帮助。要非常小心使用这样的字符串替换将值放入sql查询中。这是一个让你的应用程序被黑客攻击的好方法。它打印所有的值,每行一个值。我想这会有点难看。您是否可以对实现进行修饰,以打印所有列标题,然后为每行指定一行?@user2454991没有指定如何显示它。只是给他一些暗示。对,最好添加列标题