[MySQL] SQL语句中文别名乱码问题


MySQL 驱动下载地址: http://www.mysql.com/products/connector/, 根据自己的使用选择下载

我使用的是ASP.NET, 将下载的驱动解压, 建一个空白WEB项目, 然后引用解压出来的 MySql.Data.dll, 添加一个 test.aspx 文件

test.aspx.vb 文件代码如下:
  1. Imports System.Data
  2. Imports System.Data.Common
  3. Imports MySql.Data.MySqlClient
  4. Partial Class test
  5.     Inherits System.Web.UI.Page
  6.     Protected Sub Page_Load(ByVal sender As ObjectByVal e As System.EventArgs) Handles Me.Load
  7.         Dim connection As MySqlConnection
  8.         connection = New MySqlConnection("Server=localhost;Database=webanalytics;Uid=root;Pwd=;CharSet=utf8;")
  9.         connection.Open()
  10.         doTest(New MySqlCommand("select AutoId as `2自动编号4` from Site", connection))
  11.         doTest(New MySqlCommand("select `Id` as `desc描述222` from Site;", connection))
  12.         doTest(New MySqlCommand("select `Domain` as `3域名2domain` from Site;", connection))
  13.         doTest(New MySqlCommand("select `Explain` as `desc描述` from Site;", connection))
  14.         connection.Close()
  15.         connection.Dispose()
  16.     End Sub
  17.     Private Sub doTest(ByVal cmd As DbCommand)
  18.         Dim reader As DbDataReader = cmd.ExecuteReader()
  19.         response.Write("<h3>" & reader.GetName(0) & "</h3>")
  20.         While reader.Read
  21.             response.Write("<p>" & reader.GetValue(0))
  22.         End While
  23.         reader.Close()
  24.         cmd.Dispose()
  25.     End Sub
  26. End Class
在浏览器中查看结果如下:

注:最后一条数据在数据库中就是乱码


经反复测试, 发现问题出现在 DbDataReader, 如果只使用DbDataReader.GetName()获取字段的别名将不会现现乱码, 当读取了数据时, 并且最后一次读取的是非字符串类型, 那么下次(没有关闭连接对象)再次使用DbDataReader读取字段别名时会出现乱码(当然别名得是中文).

这样有以下方案可以解决.
1. 每次使用完 DbDataReader 后关闭连接, 再重新打开;
2. DbDataReader读取完数据之后, 再读一个字符串的字段;



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值