我一直在寻找一些关于如何做的例子 显示表中的多个或所有行。很多例子我 我发现让我很难正确执行它 因为数据库连接和查询字符串..
我使用自己的数据库类和premade查询函数。所以在我的表格中我有这个:
userInfo = searchBox.Text;
string dateResult = Database.databaseAccess.GetColumnData(HLlib.ValueType.VALUETYPE_STRING, userInfo, "date", "username", userInfo, true);
string ipResult = Database.databaseAccess.GetColumnData(HLlib.ValueType.VALUETYPE_STRING, userInfo, "ip", "username", userInfo, true);
string userResult = Database.databaseAccess.GetColumnData(HLlib.ValueType.VALUETYPE_STRING, userInfo, "username", "username", userInfo, true);
string hwidResult = Database.databaseAccess.GetColumnData(HLlib.ValueType.VALUETYPE_STRING, userInfo, "hwid", "username", userInfo, true);
string pcResult = Database.databaseAccess.GetColumnData(HLlib.ValueType.VALUETYPE_STRING, userInfo, "pcname", "username", userInfo, true);
(userInfo是一个包含正在搜索的名称(表格)的文本框。)
以这种格式获取数据的功能如下:
public string GetColumnData(ValueType valueType, string tableName, string col, string colTwo, string equalsVal, bool compare)
{
MySqlConnection connection = null;
MySqlDataReader dataReader = null;
string colData = "";
try
{
string query = "";
if (compare)
query = "SELECT `" + col + "` FROM `" + tableName + "` WHERE `" + colTwo + "`='" + equalsVal + "';";
else
query = "SELECT `" + col + "` FROM `" + tableName + "`";
using (connection = new MySqlConnection(Hash.RunDecryption()))
{
using (MySqlCommand command = new MySqlCommand(query, connection))
{
connection.Open();
command.CommandText = query;
using (dataReader = command.ExecuteReader())
{
while (dataReader.Read())
{
switch (valueType)
{
case ValueType.VALUETYPE_STRING:
colData = dataReader.GetString(0);
break;
case ValueType.VALUETYPE_INT16:
colData = dataReader.GetInt16(0).ToString();
break;
case ValueType.VALUETYPE_INT32:
colData = dataReader.GetInt32(0).ToString();
break;
case ValueType.VALUETYPE_INT64:
colData = dataReader.GetInt64(0).ToString();
break;
}
}
if (dataReader.NextResult())
{
colData = "";
while (dataReader.Read())
{
switch (valueType)
{
case ValueType.VALUETYPE_STRING:
colData = dataReader.GetString(0);
break;
case ValueType.VALUETYPE_INT16:
colData = dataReader.GetInt16(0).ToString();
break;
case ValueType.VALUETYPE_INT32:
colData = dataReader.GetInt32(0).ToString();
break;
case ValueType.VALUETYPE_INT64:
colData = dataReader.GetInt64(0).ToString();
break;
}
}
}
}
}
}
}
catch
{
System.Windows.Forms.MessageBox.Show("Failed to retrieve data!", "Error!", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error);
dataReader.Close();
CloseConnection(connection);
}
finally
{
dataReader.Close();
CloseConnection(connection);
}
return colData;
}
现在说明了,我要做的是显示所选表格中的每一行 从底部到顶部,或按日期排序(一列显示日期/时间)
我已经将我的列添加到DataGrid中,它们是:date,ip,uid,hid,pname。
我在数据库表中的格式相同。
有人可以通过提供一个如何正确执行此操作的示例来帮助我吗?
答案 0 :(得分:0)
只需在查询字符串的末尾添加:
ORDER BY date DESC
答案 1 :(得分:0)
使用Ado.net,您也可以在客户端上处理数据。如果表不是太大,可以将其内容加载到Datatable中。然后,您可以使用DataView或Datatable功能选择特定行。 Datatable可以像DB引擎一样使用过滤器执行选择。查看MSDN上的ado.net数据表对象引用
答案 2 :(得分:0)
我终于想出了一种使用它的方法,我不知道为什么我之前没试过这个..
我的整个问题只是尝试打开连接,以便打印数据。 结束了这项工作:
userInfo = searchBox.Text;
MySqlConnection connection = null;
string query = "SELECT * FROM " + userInfo + " ORDER BY date DESC;";
userGrid.Rows.Clear();
using (connection = new MySqlConnection(Hash.RunDecryption()))
{
using (MySqlCommand command = new MySqlCommand(query, connection))
{
connection.Open();
userGrid.DataSource = null;
DataSet dt = new DataSet();
MySqlDataAdapter da = new MySqlDataAdapter(command);
da.Fill(dt);
userGrid.DataSource = dt.Tables[0];
connection.Close();
}
}
感谢所有帮助过的人,特别是按日期排序