当前位置:编程学习 > C#/ASP.NET >>

c#.net 读取mysql blob里面的字符串

有个mysql的数据库,现在要把mysql的数据库换成mssql的,要把mysql的数据库导出到mssql,我用c#.net写个程序来进来对导。这里碰到了一个问题。mysql有字段是blob类型,里面存的是一个较长的字符串,而在mssql这个字段是varchar类型的。所以想把这个mysql的blob里的字符串读出来,写到mssql的varchar中。可是不懂怎么读blob字符串,读出来全是乱码。有没有高手帮忙下。 mysql blob  mssql varchar --------------------编程问答-------------------- mstempsql = @" INSERT INTO [zcgl_individual] (
[id],[createOrg], [createTime], [createUser], [orders], [other], [status], [updateOrg], [updateTime], [updateUser],
        [address], [allowUse], [certificate], [customerNo], [mobile], [nameCn], [postCode],  [sex]  )VALUES (@Id, @Createorg,  @Createtime,  @Createuser,  @Orders,  @Other,  @Status,  @Updateorg,  @Updatetime,  @Updateuser,  @Address,  @Allowuse,  @Certificate,  @Customerno,  @Mobile,  @Namecn,  @Postcode,  @Sex)";            
            mysql = "select * from zcgl_individual";
            mycm = new MySqlCommand(mysql, myconn);
            mydr = mycm.ExecuteReader();
            while (mydr.Read())
            {
                if (mydr.HasRows)
                {
                    mssql = mstempsql;
                    mssql = mssql.Replace("@Id","'"+ Guid.NewGuid().ToString()+"'");
                    mssql = mssql.Replace("@Createorg", "'" + mydr.GetString("createorg") + "'");
                    mssql = mssql.Replace("@Createtime", "'" + mydr.GetString("createtime") + "'");
                    mssql = mssql.Replace("@Createuser", "'" + mydr.GetString("createuser") + "'");
                    mssql = mssql.Replace("@Orders", "'" + mydr.GetString("orders") + "'");
                    mssql = mssql.Replace("@Other", "'" + mydr.GetString("other") + "'");
                    mssql = mssql.Replace("@Status", "'" + mydr.GetString("status") + "'");
                    mssql = mssql.Replace("@Updateorg", "'" + mydr.GetString("updateorg") + "'");
                    mssql = mssql.Replace("@Updatetime", "'" + mydr.GetString("updatetime") + "'");
                    mssql = mssql.Replace("@Updateuser", "'" + mydr.GetString("updateuser") + "'");
                    mssql = mssql.Replace("@Address", "'" + mydr.GetString("address") + "'");
                    mssql = mssql.Replace("@Allowuse", "'" + mydr.GetString("allowuse") + "'");//mysql里这个字段是BLOB的,读不出来
                    mssql = mssql.Replace("@Certificate", "'" + mydr.GetString("certificate") + "'");
                    mssql = mssql.Replace("@Customerno", "'" + mydr.GetString("customerNo") + "'");
                    mssql = mssql.Replace("@Mobile", "'" + mydr.GetString("mobile") + "'");
                    mssql = mssql.Replace("@Namecn", "'" + mydr.GetString("namecn") + "'");
                    mssql = mssql.Replace("@Postcode", "'" + mydr.GetString("postcode") + "'");
                    mssql = mssql.Replace("@Sex", "'" + mydr.GetString("sex") + "'");


                    Console.WriteLine(s.ToString());
                }
            } --------------------编程问答-------------------- 高手在哪~~` --------------------编程问答-------------------- mssql = mssql.Replace("@Allowuse", "'" + mydr.GetString("allowuse") + "'");

int index = xx //"allowuse"字序号

byte[] byts = new byte[255];
dr.GetBytes(1, 0, byts, 0, 255);

mssql = mssql.Replace(index, "'" + System.Text.Encoding.UTF8.GetString(byts) + "'"); --------------------编程问答--------------------
引用 3 楼 jack_yeung 的回复:
mssql = mssql.Replace("@Allowuse", "'" + mydr.GetString("allowuse") + "'");

int index = xx //"allowuse"字序号

byte[] byts = new byte[255];
dr.GetBytes(1, 0, byts, 0, 255);

mssql = mssql.Replace(index, "'" + System.Text.Encoding.UTF8.GetString(byts) + "'");



这写法是不是有错添呀,没看懂 --------------------编程问答-------------------- 将blob以byte数组读取,再将byte数组转为字符串 --------------------编程问答--------------------
引用 5 楼 jack_yeung 的回复:
将blob以byte数组读取,再将byte数组转为字符串


用你的方法,读出的的字符串跟 mydr.GetString("allowuse")这样读是一样的 --------------------编程问答-------------------- 那你得先确认一下存到blob中是以什么方式存的,一般字符串都是以ascii,utf-8,unicode存,可以都试下
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,