gpt4 book ai didi

c# - 如何将mysql中的数据显示出来并一一显示出来?

转载 作者:行者123 更新时间:2023-11-29 23:09:52 25 4
gpt4 key购买 nike

我在mysql中有一条数据,我想每次点击按钮时将数据一一显示出来。怎么做?

string ConnectToServer = @"server=..*.;port=****; user id=sampleID; password=samplePW; database=sampleDB; pooling=false";

    public void GetNames()
{


MySqlConnection NameConnector = null;
MySqlDataReader NameReader = null;

try
{
NameConnector = new MySqlConnection(ConnectToServer);
NameConnector.Open();

string Name = "SELECT * from sampleNames";
MySqlCommand NameCommand = new MySqlCommand(Name, NameConnector);
NameReader = NameCommand.ExecuteReader();

while (NameReader.Read())
{
Console.WriteLine(NameReader.GetInt32(0) + ": " + NameReader.GetString(1));
NameLabel.Text += NameReader.GetString("Names") + "\n";
}
}
catch (MySqlException NameException)
{
Console.WriteLine("error : (0)", NameException.ToString());
}
finally
{
if (NameReader != null)
{
NameReader.Close();
}

if (NameConnector != null)
{
NameConnector.Close();
}

}

}

private void ButtonName_Click(object sender, EventArgs e)
{
GetNames();
}

输出:

Name1
Name2
Name3
Name4
Name5

但我不想要的是,每次单击按钮时名称都会一一出现

像这样:

click = output Name1
click = output Name2
click = output Name3
click = output Name4
click = output Name5

最佳答案

至少有两种方法可以做到这一点,具体取决于您需要数据的实时程度以及您想要进行多少次数据库调用。他们在这里:

  1. 选项#1

初始化名称列表的类级别变量和索引变量。

List<string> names = null;
int currentNameIndex = 0;

在单击处理程序上,如果名称为空,则使用数据库中的所有名称填充名称变量。显示第一项,如下所示。

private void ButtonName_Click(object sender, EventArgs e)
{
if (names == null)
{
names = GetNames();
}

if (currentNameIndex < names.Count)
{
NameLabel.Text += names[currentNameIndex++];
}
}

需要修改 getnames 以返回名称列表。

  • 选项#2
  • 您可以更改 SQL 查询以从表中获取第一条记录,而不是在 1 个数据库调用中检索整个列表。 (基于 ID 或某个 key )

    单击后,GetNames 将仅检索 1 条记录并显示该记录。下次单击时,它将检索另一条记录,但不会检索第一条记录。

    这通常涉及涉及键列的查询。请发布您的表架构,我可以用查询来回答。

    例如查询是

    int currentNameId = -1;  // class level variable.

    查询是

    Select TOP 1 nameId, names from SampleNames Where NameId > currentNameId Order By NameId;

    currentNameId = int.Parse(NameReader[nameId].ToString());

    上面的查询假设 nameId 是唯一键,并且值从 0 开始或大于 -1,并且它们是增量的。 (身份PK等)

    正如我提到的,如果您可以提供表结构,我们可以更好地回答。

    选项 #1 在数据库调用中非常高效,但可能存在过时的数据。选项 #2 比选项 #1 更健谈,但具有更多实时数据。

    关于c# - 如何将mysql中的数据显示出来并一一显示出来?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28132250/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com