两种平台下客户端连接Sybase时候出错!!!---着急! (100分)

  • 主题发起人 主题发起人 代码雪儿
  • 开始时间 开始时间

代码雪儿

Unregistered / Unconfirmed
GUEST, unregistred user!
C/S结构中、后台用Sybase.
·windows平台客户端端采用BDE方式连接数据库
·Linux客户端采用Sybase和 C 的接口DBLibrary连接Sybase
问题:
·当windows平台客户端连到Sybase时候,Linux客户端连接数据库
出错,错误大概是数据库错误
---连接数据库的代码一直没有变过,最近却出错了!
·我怀疑是Sybase数据库出错了,但错在哪里不知道。
 
通过sql explorer可以连接数据库吗
 
具体的错误要看描述才知道。
可能是连接数超出配置值了,用sybase central和sql命令修改配置。
还有提醒一下,用bde连接方式访问sybase可能会造成共享锁,就是用一个query执行一个
select语句时,如果不关闭query,sybase就会保持一个共享锁。
 
To chenxz:
共享锁?
我都用的是Query的,包括查询,修改.
有时候N个Query打开数据库,
我现在还没有发现什么问题,有什么不对吗?
 
那是你没有同时对同一个表进行不同的操作。
你可以做个测试:先用一个query select打开一个表,再用另外一个query对同
一个表执行update,这时的update是不行的,会一直等待select的关闭。
 
To chenxz:
明白,可是我提问的问题怎么解决,我也知道比较麻烦。
我想是不是BDE的问题?
难道数据库有问题?
 
看看错误信息先。
 
没有什么错误信息呀。Linux客户端就是进不去,死在那了!windows客户端一退出,然后
Linux客户端立马就进去了!
 
>>Linux客户端就是进不去,死在那了!windows客户端一退出,然后
>>Linux客户端立马就进去了!
应该是Windows客户端连接上去就把某一Linux客户端需要的资源锁住了,Linux客户端死在
那是因为要等待那个资源,而Windows客户退出则释放锁住的资源,故Linux客户能立刻进入
你可以查看一下Windows客户连接的时候锁定了什么东西,再看一下Linux客户端在等待什么
东西。 Sybase中我不知道怎么查,Oracle是提供了这些视图的。
或者你把Windows客户端也换成用DBLibrary去连接。
应该不是数据库的问题。
 
当Linux客户端连到Sybase的时候,windows客户端再连接它是不是也出错啊 ?
 
我重新换个版本的BDE v5.2的,(我不知道Delphi6自带的BDE版本是多少)
发现没有任何问题!
但是我程序的好多SQL语句运行出错
就是insert into,update的语句出错!!
但是在原先的BDE方式下就可以!!
像下面的语句就出错,(原先可以):
strSQL:='insert into test(Fieldint,Fieldstr,Fieldmoney,Fieldtime,Fieldbit,Fieldtxt) values(:Fieldint,:Fieldstr,:Fieldmoney,:Fieldtime,:Fieldbit,:Fieldtxt)';
with self.Query1 do begin
close;
sql.Clear;
sql.Add(StrSQL);
params[0].AsInteger :=StrToIntDef(self.FlatEdit1.Text, 0);
params[1].Asstring :=self.FlatEdit2.Text ;
params[2].AsCurrency :=strToCurr(FlatEdit3.Text);
params[3].AsString :=self.FlatEdit4.Text ;
params[4].AsBoolean :=True
params[5].AsMemo :=Self.FlatEdit5.Text;
execsql;//出错!
showmessage('OK');
end;
//==========================
// 我发现下列插入语句可以(但是,我工程都快做完了,难道让我一个一个修改SQL语句?晕呀~~~
//=============================
strSQL:='insert into test(Fieldint,Fieldstr) values(1,'+''''+'test1'+''''+')';
strSQL:='Update test set Fieldint=2,Fieldstr='+''''+'Hello'+'''';

//================================
//=================问题所在原因终于发现!!(以上错误!,请谅解)=======================
不能向一个varchar类型的数据输入汉字!!!!!
同时显示出来的汉字为乱码!!!!!!!!!!!!
急救!!!!!!!!!!!!!!!!!!
 
多人接受答案了。
 
后退
顶部