我正在做一个接口程序,对方使用的是SYBASE数据库,我通过VB连接到SYBASE中后,向表中插入记录出现问题,基本情况如下(例):
向表TABLE中插入记录,表中仅一个字符型字段FIELDNAME,使用以下SQL(VB中):
insert into TABLE (FIELDNAME) values ('ZZZZ')
能成功插入记录,如果使用以下SQL(同样在VB中使用):
insert into TABLE (FIELDNAME) values ('中文')
这样插入会发生错误,而且错误提示很奇怪,提示是“[SYBASE][OLE DB Sybase provider][SQL Server]Unclosed quote before the character string '中文'.”
初步分析可能是因为字符集的问题引起的,但因为是做的接口程序,如果改更SYBASE的字符集就会引起对方程序不能使用,所以只能从VB这方面想办法,使用的联接串如下:
“Provider=Sybase.ASEOLEDBProvider.2;口令=" & strPass & ";持续安全性信息=True;用户 ID=" & strUser & ";数据源=" & strServer”
串应该没有问题,因为执行第一条语句时就能成功,请各位老大出出主意

解决方案 »

  1.   

    这一点不用怀疑,我可以保证连接串是正确的,但不保证连接串的参数设置是否完整(如果可以在连接串中设置字符集就好了,不知道有没有这个东东),也就是说,可以保证这个连接串能正确的执行诸如insert into TABLE (FIELDNAME) values ('ZZZZ')一类的SQL,只要值中不含有中文就不会出错
      

  2.   

    Option ExplicitDim cn As New ADODB.Connection, rs As New ADODB.RecordsetPrivate Sub Command1_Click()
        cn.Execute "INSERT INTO tables (FIELDNAME) VALUES ('中文')"
    End SubPrivate Sub Form_Load()
        cn.ConnectionString = "Driver={Sybase System 11};SRVR=cuizm;DATABASE=dlgs;UID=sa;PWD="
        'cn.ConnectionString = "Provider=Sybase.ASEOLEDBProvider.2;口令=;持续安全性信息=True;用户 ID=sa;数据源="
        'cn.ConnectionString = "Provider=Sybase.ASEOLEDBProvider;Server Name=cuizm,5000;Initial Catalog=dlgs;User Id=sa;Password="
        cn.Open
    End SubPrivate Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
    On Error Resume Next
        rs.Close
        Set rs = Nothing
        cn.Close
        Set cn = Nothing
    End Sub测试通过,没问题!!
      

  3.   

    http://www.connectionstrings.com/
    上这里看看SYBASE的其他连接方式!