c# - ASP.net 和 MySQL 之间的通信问题

标签 c# mysql asp.net .net vb.net

我有以下场景-

用户可以在文本框中输入任何语言的文本,并且需要将其与语言名称一起存储在我的数据库中。以下是 button Update

的代码
Dim conStr As String = "Dsn=search;database=search;description=search;option=0;port=0;server=localhost;uid=root;CharacterSet=UTF8;"
Dim s As String = txtLanguage.Text '<----"音読み現代仮名遣い人名用漢字"
mySQL = "INSERT INTO multi_language(language, characters)" & _
        " VALUES ('Japanese', '" & s & "')"
con.ConnectionString = conStr
con.Open()
cmd = New OdbcCommand(mySQL, con)
cmd.ExecuteNonQuery()
con.Close()

运行查询的简短屏幕

点击按钮后 Textbox 中的文本变为 '??????' 插入数据库的数据如下

  Language     |     characters
  --------------------------
  Japanese     |      ?????

我的表结构是

CREATE TABLE multi_language
(
id INTEGER NOT NULL AUTO_INCREMENT,
language VARCHAR(30),
characters TEXT,
PRIMARY KEY(id)
) ENGINE=INNODB CHARACTER SET = utf8;

当我直接在查询浏览器中执行查询时,它会正确执行,

我的代码有什么问题?我需要添加什么才能获得正确的结果?

这是比较来自 asp.net page and query browser 的插入的屏幕截图

最佳答案

我也遇到了类似的情况,我用不同的方式解决了如下:

插入时将您的查询用作:

Dim s As String = txtLanguage.Text '<----"音読み現代仮名遣い人名用漢字"
mySQL = "INSERT INTO multi_language(language, characters)" & _
        " VALUES ('Japanese', '" & encodeUTF(s) & "')"

插入前编码字符串

Public Function encodeUTF(ByVal inputString As String) As String '<-- function for encoding the input string
        Dim byt() As Byte = uni.GetBytes(inputString)
        encodeUTF = ""
        For Each b As Byte In byt
            encodeUTF &= b & ","
        Next
        Trim(Replace(encodeUTF, ",", ""))
End Function

在检索之前解码字符串

Public Function decodeUTF(ByVal inputString As String) As String '<-- function for decoding the input string
    Dim strs() As String
    strs = inputString.Split(",").ToArray
    Dim temp(strs.Length) As Byte
    Dim i As Integer
    For i = 0 To strs.Length - 2
        temp(i) = Byte.Parse(strs(i))
    Next
    decodeUTF = uni.GetString(temp)
    decodeUTF = decodeUTF.Substring(0, Len(decodeUTF) - 1)
End Function

将此文本检索到文本框时,您可以将查询用作:

 mySQL = "Select language, characters from multi_language"
 Reader = objdb.GetDataReader(mySQL)'<--- is a class function which returns the datareader
 If Reader.HasRows = True Then
    Reader.Read()
    txtlang.Text = objOdbcDataReader.Item("language")'<--- display the selected language
    txtchar.Text = objOdbcDataReader.Item("characters ")'<--- display the selected characters
 End If

关于c# - ASP.net 和 MySQL 之间的通信问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27076671/

相关文章:

javascript - .NET MVC/Javascript 从动态 HTML 转义单引号

c# - 在 C#.NET 应用程序中使用 SQL Server 时间数据类型?

c#:这段代码会得到优化吗?

MySQL - 连接在同一个表上?

Java/MySQL 调度程序,网络应用程序和独立应用程序的提醒

asp.net - IIS asp.net mvc 部分?上传文件

c# - 无法将类型为 'System.Int32' 的对象转换为 DataReader.GetString() 中的类型 'System.String'

c# - 获取 TreeView 中的扩展节点

MySQL 表关系 - 如果字段有值则加入

c# - 在 C# 中编码 cookie 值的安全方法