【发布时间】:2019-01-03 02:15:08
【问题描述】:
我正在尝试检查max_allowed_packet 大小的值。这是我的代码:
public int MaxAllowedPacket()
{
var max = 0;
using (var conn = new MySqlConnection(_ConnectionString))
{
var sql = conn.CreateCommand();
sql.CommandText = "SHOW VARIABLES like 'max_allowed_packet'";
try
{
conn.Open();
var reader = sql.ExecuteReader();
// not sure where to go from here
}
catch (Exception ex)
{
// I've got some logging here
}
}
return max;
}
我怀疑查询的格式或执行是错误的,因为我的结果总是
-1
编辑:
我已经编辑了代码以使用sql.ExecuteReader(),但现在的结果是:
“枚举没有结果”。
【问题讨论】:
-
运行 executenonquery,不返回数据 - 所以......你不能要求“选择东西”来返回你的值。
-
@BugFinder 谢谢。我已将其更改为
sql.ExecuteReader();,但查询返回“枚举未产生任何结果”。读取值的正确方法是什么? -
如果您只期望返回一个值,那么 ExecuteScalar 可能更容易使用
-
@ADyson ExecuteScalar 似乎只返回第一个值,在本例中为字符串
"max_allowed_packet"。 -
@ToshiBoy 没问题,我不确定它会返回什么。您的答案是正确的,使用 DataReader 您必须执行 Read() 命令才能移至第一行(然后再次执行以移至后续行 - 人们通常将
while (reader.Read()) { ... }用于读取多行中的所有行结果集
标签: c# mysql max-allowed-packet