我测试如下:
环境:Win2000 Server(中文)+Oracle8.1.7
数据库字符集:WE8ISO8859P1(英文)
客户端字符集设置:WE8ISO8859P1执行代码没有问题
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
rs.CursorLocation = adUseClient
cn.Open "Provider=MSDAORA.1;Password=tiger;User ID=scott;Data Source=ORACLE;Persist Security Info=True"
rs.Open "select * from a", cn, adOpenDynamic, adLockOptimistic
rs.AddNew
rs.Fields("c1").Value = "~"
rs.Update
rs.Close
rs.Open "select * from a", cn, adOpenStatic, adLockReadOnly
Debug.Print rs.Fields("c1").Value
Text1.Text = rs.Fields("c1").Value都显示正确了。包括在sqlPLUS中
SQL> select * from a;C1
----------
~建议你,检查一下客户端的字符集设置和服务器端的是否一致。
环境:Win2000 Server(中文)+Oracle8.1.7
数据库字符集:WE8ISO8859P1(英文)
客户端字符集设置:WE8ISO8859P1执行代码没有问题
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
rs.CursorLocation = adUseClient
cn.Open "Provider=MSDAORA.1;Password=tiger;User ID=scott;Data Source=ORACLE;Persist Security Info=True"
rs.Open "select * from a", cn, adOpenDynamic, adLockOptimistic
rs.AddNew
rs.Fields("c1").Value = "~"
rs.Update
rs.Close
rs.Open "select * from a", cn, adOpenStatic, adLockReadOnly
Debug.Print rs.Fields("c1").Value
Text1.Text = rs.Fields("c1").Value都显示正确了。包括在sqlPLUS中
SQL> select * from a;C1
----------
~建议你,检查一下客户端的字符集设置和服务器端的是否一致。
追加或者用SQL-PLUS取值都能处理“~”,就是在VB中rs.Fields("c1").Value的时候,它的
值就变成“?”了;
我用别的方法连接数据库的时候也没有这个问题的;
还有别的什么问题呢?真的想不出来了