Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.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# 如何从MYSQL获取数据到windows窗体应用程序并用C填充字符串_C#_Mysql_Visual Studio - Fatal编程技术网

C# 如何从MYSQL获取数据到windows窗体应用程序并用C填充字符串

C# 如何从MYSQL获取数据到windows窗体应用程序并用C填充字符串,c#,mysql,visual-studio,C#,Mysql,Visual Studio,我不熟悉这个长话短说,我的数据库中有一个名为data的表,它有3列ID、type、info,在用10行填充数据之后 我需要运行windows窗体,并有一个按钮从这些行获取信息,并将它们存储在10个字符串中 string1 = ( get string type from row 1 ) string 2 = ( get string type from row 2) until string 10 我可以使用此代码获取特定的第一行 string query = "select * from

我不熟悉这个长话短说,我的数据库中有一个名为data的表,它有3列ID、type、info,在用10行填充数据之后

我需要运行windows窗体,并有一个按钮从这些行获取信息,并将它们存储在10个字符串中

string1 = ( get string type from row 1 )

string 2 = ( get string type from row 2)
until string 10
我可以使用此代码获取特定的第一行

string query = "select * from data where id=1";

MySqlConnection connect = new MySqlConnection(info);
MySqlCommand dbcommand = new MySqlCommand(query, connect);

MySqlDataReader myreader;

try
{
    connect.Open();
    myreader = dbcommand.ExecuteReader();

    while (myreader.Read())
    {
        string1 = (string)myreader["type"];
    }
}
catch (Exception ex)
{
}

connect.Close();
让代码在10个字符串中存储10行信息的最佳方法是什么


谢谢

首先,将结果存储在数组中,而不是存储在10个单独的变量中,循环并加载每个变量,直到无法读取更多数据或读取所需的数字

这是一篇使用您的方法进行的快速总结,但我将您的MySqlConnection放在一个使用块中:

string query = "select * from data where id=1";

using (MySqlConnection connect = new MySqlConnection(info))
{
    MySqlCommand dbcommand = new MySqlCommand(query, connect);
    connect.Open();

    int i = 0;
    int numStrings = 10;
    string[] strings = new string[numStrings];

    MySqlDataReader myreader = dbcommand.ExecuteReader();

    while (myreader.Read() && i < numStrings)
    {
        strings[i++] = (string)myreader["type"];
    }
}       

然后可以通过字符串数组访问结果,因此第一个是字符串[0],第十个是字符串[9]。

好的,在阅读了你的问题几次之后,我想我理解了你的意思。您希望存储10个字符串,每个字符串应包含数据库中某行的“type”列中的数据

最简单的解决方案是创建一个新列表,并在每行循环时将字符串存储在其中

例如:

try
    {
        string query = "select * from data";

        List<string> strings = new List<string>();

        MySqlConnection connect = new MySqlConnection(info);
        MySqlCommand dbcommand = new MySqlCommand(query, connect);

        connect.Open();

        myreader = dbcommand.ExecuteReader();

        while (myreader.Read())
        {
            strings.add(Convert.ToString(myreader["type"]));
        }
    }
    catch (Exception ex)
    {
    }

    connect.Close();

我还建议您为打开和关闭数据库连接查找更好的解决方案。现在很混乱。

OOPS,我的意思是在原来的问题上发表我的评论,而不是这个答案,对不起。看看这个——它会让你在应用程序和mysql之间的交互变得更容易。页面底部的示例正是您需要的。如果可能,您可以在一个查询中获取所有必需的结果,然后在应用程序代码中解析它们。尽可能避免使用“*”,当您开始在更大的系统中工作时,这将是一个好习惯。
foreach (string s in strings)
{
   //do something with "s"
}