【问题标题】:Add SQL query on button using C#使用 C# 在按钮上添加 SQL 查询
【发布时间】:2020-03-19 11:54:46
【问题描述】:

我在 C# 中创建了一个 Windows 窗体应用程序,并在 Visual Studio 中创建了我的数据库。如果可能的话,我想知道如何通过单击按钮对表中的一列进行排序?或者如何在不使用按钮的情况下自动对该列进行排序?

我尝试在下面的代码中实现这种排序,但它不起作用:(

private c void button5_Click(object sender, EventArgs e)
{
    SqlConnection sqlConnection = new SqlConnection("Here is my connecting string");

    SqlCommand myCommand = new SqlCommand("SELECT * FROM [Information] ORDER BY (Перевозчик)", sqlConnection);

    sqlConnection.Open();
    myCommand.ExecuteNonQuery();
}

【问题讨论】:

    标签: c# sql-server tsql


    【解决方案1】:

    在这里找到:https://www.w3schools.com/sql/sql_orderby.asp

    我们不知道你想知道什么,我们只能在这里猜测。

    但是你可以试试这个查询:

    SELECT column1, column2, ...
    FROM table_name
    ORDER BY column1, column2, ... ASC
    

    在你的情况下:

    "SELECT * FROM [Information] ORDER BY (Перевозчик) ASC"
    

    最好使用可视化查询构建器,您可以在其中查询您的数据库。当您对结果感到满意时,您至少可以确定查询是正确的。 这里解释了如何做到这一点:

    https://www.c-sharpcorner.com/article/connect-to-a-database-from-visual-studio/

    由于 sqlconnection 和 sqlcommand 是一次性的,因此您应该考虑将其放在 using 标记中,如本例所示。 https://docs.microsoft.com/en-us/dotnet/api/system.data.sqlclient.sqlcommand?view=netframework-4.8

    private static void ReadOrderData(string connectionString)
    {
        string queryString = 
            "SELECT OrderID, CustomerID FROM dbo.Orders;";
        using (SqlConnection connection = new SqlConnection(
                   connectionString))
        {
            SqlCommand command = new SqlCommand(
                queryString, connection);
            connection.Open();
            using(SqlDataReader reader = command.ExecuteReader())
            {
                while (reader.Read())
                {
                    Console.WriteLine(String.Format("{0}, {1}",
                        reader[0], reader[1]));
                }
            }
        }
    }
    

    数据排序有两种方式

    1) 仅对数据进行排序并填充到网格中:

    DataGridView datagridview1 = new DataGridView(); // for show data
    DataTable dt1 = new DataTable(); // have data
    DataTable dt2 = new DataTable(); // temp data table
    DataRow[] dra = dt1.Select("", "ID DESC");
    if (dra.Length > 0)
        dt2 = dra.CopyToDataTable();
    datagridview1.DataSource = dt2;
    

    2) 排序默认视图,类似于带有网格列标题的排序:

    DataGridView datagridview1 = new DataGridView(); // for show data
    DataTable dt1 = new DataTable(); // have data
    dt1.DefaultView.Sort = "ID DESC";
    datagridview1.DataSource = dt1;
    

    我在这里找到了这个解决方案: Sorting rows in a data table

    对于列表框,您可以试一试

    ArrayList q = new ArrayList(); 
    foreach (object o in listBox4.Items) 
            q.Add(o);
    } 
    q.Sort(); 
    listBox5.Items.Clear();
    foreach(object o in q){
        listBox5.Items.Add(o); 
    }
    

    我在这里找到了这个解决方案: Sorting a list of items in a list box

    【讨论】:

    • 感谢您的回复!我在我的 vs 上进行了 sql 查询并保存了它,但是当我启动我的表单应用程序时,我的列没有排序,我尝试按字母对列进行排序
    • 我刚刚添加了另一个解决方案,这可能是您所需要的
    • 我在 vs 查询生成器中进行了 sql 查询,它是: SELECT * FROM [Information] ORDER BY (Перевозчик) 在查询结果中我看到了我需要的,但在我的表单上没有,问题是为了显示我的表格信息,我只使用列表框,没有 datagridview
    • 我为列表框添加了解决方案
    • 非常感谢您抽出宝贵时间 :) 我解决了我的问题
    【解决方案2】:

    您需要执行 ExecuteDatareader 然后处理来自此调用的结果。 ExecuteNonQuery 不能用于检索数据。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-06-25
      • 1970-01-01
      • 1970-01-01
      • 2019-12-25
      • 1970-01-01
      • 1970-01-01
      • 2011-09-17
      相关资源
      最近更新 更多