C#从MySQL读取重复相同的行

时间:2014-08-13 21:22:54

标签: c# mysql database logging

只是一些"希望"简单的问题。

问题: 1.数据读取仅重复1行不间断。 2.我怎样才能将数据库中的新条目添加到我的文本框中?

我尝试编写一个小工具,每隔一段时间从我的数据库中读取一次,并用响应数据填充我的文本框。例程有效,但只在我的文本框中显示1行,再次调用时,反复重复相同的行。

我使用相同的例程(略有改动)从用户聊天记录中读取,该记录也存储在数据库中,似乎工作正常。

我不能为我的生活找到任何体面的文档,只是将数据库中的新数据附加到我的日志文件中。如果有人能够对此有所了解,我们将不胜感激!

    private void GMAudit()
    {
        //Get Connection Information
        IniFile ini = new IniFile();

        string SERVER = ini.IniReadValue("Settings", "ServerIP");
        string USER = ini.IniReadValue("Settings", "Username");
        string PASS = ini.IniReadValue("Settings", "Password");
        string DB = ini.IniReadValue("Settings", "Database");

        //Set Connection Information
        MySql.Data.MySqlClient.MySqlConnection GMAuditConnection;
        string myConnectionString;
        myConnectionString = "server=" + SERVER + ";" + "uid=" + USER + ";" + "pwd=" + PASS + ";" + "database=" + DB + ";";

        //Connect to MySQL Server
        GMAuditConnection = new MySql.Data.MySqlClient.MySqlConnection();
        GMAuditConnection.ConnectionString = myConnectionString;
        GMAuditConnection.Open();

        //Send Query
        string queryGMAudit = "SELECT Speaker, type, datetime, SUBSTRING(commandline,1,2000) FROM audit_gm Limit 25;";
        MySql.Data.MySqlClient.MySqlCommand GMAudit = new MySql.Data.MySqlClient.MySqlCommand(queryGMAudit, GMAuditConnection);
        GMAudit.CommandText = queryGMAudit;

        //Connect the Reader to the Database
        MySqlDataReader rdr = null;
        rdr = GMAudit.ExecuteReader();

        //Populate the Textbox Log
        if (rdr.HasRows)
        {
            while (rdr.Read())
            {
                var txt = txtGM.Text;
                var str0 = "";
                var str1 = "";
                var str2 = "";

                //Break Colums into Strings
                var strNewLine = Environment.NewLine;
                str0 = rdr[0].ToString();
                str1 = rdr[1].ToString();
                str2 = rdr[2].ToString();

                byte[] byteBLOBData = (Byte[])(rdr[3]);
                String s = System.Text.Encoding.UTF8.GetString(byteBLOBData);

                //Combine Columns into a Single String & Append to Text Box
                txtGM.AppendText(str0 + " " + str1 + " " + str2 +  " " + s + strNewLine);

                rdr.NextResult();               
            }
        }
        if (rdr != null)
        {
            rdr.Close();
        }

        //Disconnect from MySQL Server
        GMAuditConnection.Close();
    }

1 个答案:

答案 0 :(得分:1)

rdr.Read()应该提前光标。 rdr.NextResult()将光标移动到以下结果集(如果您的查询返回多个集合),因此当您执行该行时,读取器会在下一次迭代时中断while循环。

仅供参考:http://msdn.microsoft.com/en-us/library/haa3afyz(v=vs.110).aspx