要显示SQL C#中的表(Windows窗体)的对象

本文关键字:Windows 窗体 对象 SQL 显示 | 更新日期: 2023-09-27 18:22:19

我基本上有两个问题。我一直在找。但我主要发现控制台应用程序非常基础,我对它们的理解与SQL有关。

然而,我从我的视图类中获取用户输入,并用一个方法将其发送到连接类。我希望connect类能够处理SQL的所有工作。现在我有了一个工作连接,我编写了一个正确的SQL语句。如何将其返回到视图类,以及您建议使用什么ListBox

当我们在java中这样做时,我们得到了一个结果集,并对其进行了翻译,使其适合jtable。我想知道如何在Visual Studio中解决这个问题。

public void askSQL (string sqlQuestion)
{
    SqlCommand cmd = new SqlCommand();
    cmd.CommandText = sqlQuestion;
    cmd.Connection = connector;
    try
    {
        rdr = cmd.ExecuteReader();
        while (rdr.Read())
        {
            MessageBox.Show("Du läser in data");   
        }
    }
    catch (Exception e)
    {
        MessageBox.Show("Fel vid anslutningen!" + e);
    }
}

我目前对代码没有任何问题。连接正在工作,我收到了多个答案"Du läser in data",因为我的表中有多列和多行。

要显示SQL C#中的表(Windows窗体)的对象

函数返回将用数据库数据填充的DataTable对象:
public DataTable askSQL (string sqlQuestion)
{
    DataTable table = new DataTable();
    try
    {
        using (SqlDataAdapter adapter = new SqlDataAdapter(sqlQuestion, connector))
        {
            adapter.Fill(table);
        }
    }
    catch (Exception e)
    {
        MessageBox.Show("Fel vid anslutningen!" + e);
    }
    return table;
}

这将返回尽可能接近表结构的内容。。DataTable具有Rows集合,每一行具有来自数据库的一条记录的数据,并且每个DataRow具有具有字段值的ItemArray集合。

例如,要访问第二行名为"电子邮件"的字段,请使用以下代码:

DataTable table = connect.askSQL("Select Email From Users Where UserId In (1, 2)");
string email = table.Rows[1]["Email"].ToString();

您可以使用简单的循环对行进行迭代:

foreach (DataRow row in table.Rows)
{
    string email = row["Email"].ToString();
    MessageBox.Show("Current email: " + email);
}

希望这是足够的信息。:)