我有以下场景-
用户可以在文本框中输入任何语言的文本,并且需要将其与语言名称一起存储在我的数据库中。以下是 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;
当我直接在查询浏览器中执行查询时,它会正确执行,
我的代码有什么问题?我需要添加什么才能获得正确的结果?
这是比较来自 的插入的屏幕截图
最佳答案
我也遇到了类似的情况,我用不同的方式解决了如下:
在插入时将您的查询用作:
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/