只是一些"希望"简单的问题。
问题: 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();
}
答案 0 :(得分:1)
rdr.Read()
应该提前光标。 rdr.NextResult()
将光标移动到以下结果集(如果您的查询返回多个集合),因此当您执行该行时,读取器会在下一次迭代时中断while循环。
仅供参考:http://msdn.microsoft.com/en-us/library/haa3afyz(v=vs.110).aspx