请问一个很奇怪的有关问题【C#显示mysql查询结果出现System.Byte[]】
请教一个很奇怪的问题【C#显示mysql查询结果出现System.Byte[]】
数据库为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[]了
/// <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;
}