连接字符串中没有数据库参数的MySqLConnection的Reader

时间:2017-04-07 07:03:15

标签: c# mysql

我试图通过MySQL实例上的DataReader运行以下查询。读者总是返回null,我理解这是由于连接字符串中缺少Database参数。如何使此查询起作用。我需要数据库中的用户名,数据库名和主机名,但我不确定要查询哪个数据库。

select current_user(), database(), @@hostname hostname;

在以下函数中进行调用,并且连接并非特定于任何数据库:

public DatabaseDetails GetDetailsDetails(ConnectionDetails details)
    {
        using (var dbCommand = details.Connection.CreateCommand())
        {
            dbCommand.CommandText = "select current_user(), database(), @@hostname hostname;";
            using (var dr = dbCommand.ExecuteReader(CommandBehavior.SingleRow))
            {
                return dr.Read()
                    ? new DatabaseDetails
                    {
                        Username = DBFunction.GetString(dr, 0),
                        Database = DBFunction.GetString(dr, 1),
                        Server = DBFunction.GetString(dr, 2)
                    }
                    : null;
            }
        }
    }

使用的连接字符串:

user id=root;password=***;data source=localhost;integrated security=false;auto enlist=true;

其他信息: 即使我将数据库名称放在查询中,我也无法从任何数据库表中获取前20条记录。 debug上的datareader显示行,但所有行都是"?"。例如,使用以下命令文本,我没有记录:

select * from db_sample.table_sample limit 20;

更新 当我在查询或连接字符串中提到数据库时,我已经按照自己的方式从表中提取数据。现在我只需要在不知道数据库(使用查询)的情况下从mySQL数据服务器获取以下内容:

  • 数据库名称
  • 主机名
  • 用户名

0 个答案:

没有答案