请问一个很奇怪的有关问题【C#显示mysql查询结果出现System.Byte[]】

请教一个很奇怪的问题【C#显示mysql查询结果出现System.Byte[]】
本帖最后由 somezy 于 2014-06-25 18:27:56 编辑

        /// <summary>
/// GetValueOfSQL
/// 根据SQL取得数据库中的值
/// </summary>
/// <param name="SQL"></param>
/// <returns></returns>
public static string GetValueOfSQL(string SQL)
{
DataSet D = Instance().GetDataSet(SQL);
                        if (D.Tables[0].Rows.Count > 0)
                        {
                                 return D.Tables[0].Rows[0][0].ToString();
                        }
                        else
                        {
                             return null;
                        }
}

        /// <summary>
/// 取得一个记录集   无参SQL
/// </summary>
/// <param name="strsql">查询的sql语句</param>
/// <returns>成功返回一个记录集,出错抛出异常</returns>
public DataSet GetDataSet(string strsql)
{
DataSet ds=new DataSet();
MySqlCommand Command = new MySqlCommand(strsql);
Command.Connection = (MySqlConnection)Connection;
MySqlDataAdapter sqlDataAd = new MySqlDataAdapter();
sqlDataAd.SelectCommand = Command;
sqlDataAd.Fill(ds);
                        Logout();
return ds;
}

        /// <summary>
        /// F1快捷键事件
        /// </summary>
        private void keyCode_F1_Event()
        {
            string rr = CommonLib.MysqlDb.GetValueOfSQL("SELECT CONCAT('BLZ20140625', LPAD(IF(MAX(SUBSTR(SUPPLIER_ID,12,3))+1,MAX(SUBSTR(SUPPLIER_ID,12,3))+1,1),3,0)) AS NewNum FROM supplierinfo WHERE SUBSTR(SUPPLIER_ID,1,11)='BLZ20140625'");
        }


数据库为mysql5.0.96
操作系统为win7 64bit 旗舰版
开发工具为VS2010

在上述代码中,我在keyCode_F1_Event()中执行了一个SQL查询,结果返回的结果rr为:“System.Byte[]” ,可是我单独拷贝这段SQL语句到数据库中查询是可以得到结果为:BLZ20140625001,请问各位大虾这个是什么问题?
更郁闷的是我把上述代码中的SQL语句替换成一个简单的SQL语句:
string rr = CommonLib.MysqlDb.GetValueOfSQL(“SELECT SUPPLIER_ID FROM  supplierinfo  WHERE NAME='CAT'”)
这个时候就可以得到正常的结果:rr为:BLZ20140611001。
而且我在GetValueOfSQL(string SQL)这个函数中已经将查询的结果tostring()了呀,为什么会出现“System.Byte[]”。
------解决方案--------------------
Rows[0][0]被认为是byte[]了

            if (D.Tables[0].Rows.Count > 0)
            {
                return Encoding.Default.GetString((byte[])D.Tables[0].Rows[0][0]);
            }
            else
            {
                return null;
            }