我正在做一个接口程序,对方使用的是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”
串应该没有问题,因为执行第一条语句时就能成功,请各位老大出出主意
向表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”
串应该没有问题,因为执行第一条语句时就能成功,请各位老大出出主意
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测试通过,没问题!!
上这里看看SYBASE的其他连接方式!