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) + "'"); --------------------编程问答--------------------
这写法是不是有错添呀,没看懂 --------------------编程问答-------------------- 将blob以byte数组读取,再将byte数组转为字符串 --------------------编程问答--------------------
用你的方法,读出的的字符串跟 mydr.GetString("allowuse")这样读是一样的 --------------------编程问答-------------------- 那你得先确认一下存到blob中是以什么方式存的,一般字符串都是以ascii,utf-8,unicode存,可以都试下
补充:.NET技术 , C#