下面代码运行时,text1中输入数字或字母都没问题,输出的中文也正常。但是如果输入中文查询就会出现错误,如图所用到的表中字符型字段编码都是latin1_swedish_ciPrivate Sub Command1_Click()Dim conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim connstr As String
connstr = "DRIVER={MySQL ODBC 5.1 Driver};" & "SERVER=127.0.0.1;" & "port=3306;" & "DATABASE=my;" & "UID=root;PWD=rufeng;OPTION=3"
conn.Open connstr
conn.CursorLocation = adUseClient
rs.Open "select question,answer1,answer2,answer3,answer4,result from cq_quiz where question like '%" & Text1.Text & "%';", connWhile Not rs.EOF
Debug.Print rs.Fields(0).Value, rs.Fields(1).Value
s = s & rs.Fields("question").Value & String(5, " ") & rs.Fields("answer1").Value & String(1, "|") & rs.Fields("answer2").Value & String(1, "|") & rs.Fields("answer3").Value & String(1, "|") & rs.Fields("answer4").Value & String(1, "|") & rs.Fields("result").Value & String(1, "|") & vbCrLf
rs.MoveNext
Wend
Text2.Text = srs.Close
conn.Close
Set rs = Nothing
Set conn = NothingEnd Sub

解决方案 »

  1.   

    http://topic.csdn.net/t/20050720/16/4157119.html
    http://topic.csdn.net/t/20050416/20/3942369.html
    http://wordpress.org.cn/viewthread.php?tid=5368
      

  2.   

    rs.Open "select question,answer1,answer2,answer3,answer4,result from cq_quiz where question like '%" & Text1.Text & "%';", conn
    “%”后面还需要“;”吗?!
      

  3.   

    楼上的没看明白我的意思,数据库是没问题的,用命令行查询是没问题的
    如果把SQL换成select * from quiz where id=1,这样在VB里输出也是正确的,但是中间有中文就是不行
      

  4.   

    上面的是跟2楼的说的3楼的朋友,跟这个";"号是没关系的,我写PHP习惯了,总是带个分号,去掉分号这个程序运行结果也是一样的
      

  5.   

    Dim conn As New ADODB.Connection
    Dim rs As New ADODB.Recordset
    Dim connstr As String
    connstr = "Provider=SQLOLEDB.1;Persist Security Info=True;User ID=用户名;Password=密码;Initial Catalog=数据库名;Data Source=计算机名"conn.Open connstr
    conn.CursorLocation = adUseClient
    rs.Open "select question,answer1,answer2,answer3,answer4,result from cq_quiz where question like '%" & Text1.Text & "%';", connWhile Not rs.EOF
    Debug.Print rs.Fields(0).Value, rs.Fields(1).Value
    s = s & rs.Fields("question").Value & String(5, " ") & rs.Fields("answer1").Value & String(1, "|") & rs.Fields("answer2").Value & String(1, "|") & rs.Fields("answer3").Value & String(1, "|") & rs.Fields("answer4").Value & String(1, "|") & rs.Fields("result").Value & String(1, "|") & vbCrLf
    rs.MoveNext
    Wend
    Text2.Text = srs.Close
    conn.Close
    Set rs = Nothing
    Set conn = Nothing
    我用上面的代码试过,没有问题的,可能是你的那个连接有问题,你换成我的试一下看看。
      

  6.   

    难道是MySQL ODBC 5.1 Driver不行?
    晚上我去换3.51试试吧
      

  7.   

    真受不了,原来是ODBC驱动的问题
    换成3.51版本的,可以设置charset,5.1版本的就没有这个本来还以为新版本的会好一些