C#读取mysql 中text 类型数据到DataTable中,然后通过string str=tb.Rows[0][1].toString()
为什么获取的str输出为"System。Byte[]",而不是数据库中存储的数据?

解决方案 »

  1.   

    string str=tb.Rows[0][1].toString()
    已经toString()了的呀,有些怪,不过对MYSQL也不熟悉
    楼主确认是toString()了吗?
      

  2.   

    兄弟,你看看mysql设置的字符集是什么?通常是unicode吧。因为它不是ascii码,所以你看到的就不是这样的。你可以进行字符集变换,或者你把mysql的字符集改一下,同时设置成varchar或char(不是nvarchar,nchar)
      

  3.   

    谢谢各位了,问题已经解决,就是使用mysqlDriver访问数据库,读取text类型数据只能使用MySQLDataReader来读取,而不同于读取Sql Server数据,在此分享一下方法: 
    MySQLDataReader dr = cmd.ExecuteReaderEx();
                while (dr.Read())
                {
                    res = dr.GetString(dr.GetOrdinal ("pDesc"));
                }
    结贴了....
      

  4.   

     我现在的程序是这个样子:
    MySQLConnection conn = null;
                    try
                    {
                        conn = new MySQLConnection(new MySQLConnectionString("192.168.1.5", "ceshi", "root", "sa").AsString);
                        conn.Open();    //打开数据库连接
                        string sql = string.Format("select * from tb_user_block where UserBlockID='{0}'", 7744351288576191794);
                        MySQLDataAdapter mySQLDataAdapter = new MySQLDataAdapter(sql, conn);
                        DataTable dataTable = new DataTable();
                        mySQLDataAdapter.Fill(dataTable);   //将执行sql后的结构放在dataTable里
                        int dataCount = dataTable.Rows.Count;   //查询出数据的条数
                        for (int i = 0; i < dataTable.Rows[0].Table.Columns.Count; i++)     //拿出这条数据每一列的值
                        {
                            if (i == 2)
                            {
                                string t = System.Text.UnicodeEncoding.Default.GetString((byte[])dataTable.Rows[0][i]);
                            }
                            string s = dataTable.Rows[0][i].ToString();
                        }
      

  5.   

    请参看我的百度空间:hi.baidu.com/chengzq11