Delphi连接Oralce的问题...(50分)

  • 主题发起人 主题发起人 Sachow
  • 开始时间 开始时间
S

Sachow

Unregistered / Unconfirmed
GUEST, unregistred user!
我用Delphi4/5通过ODBC连接Personal Oracle8,但在操作时有些问题:
1、不能使用TQuery的Append、Delete、Post等过程;
2、在使用SQL语句插入记录后,数据表会自动关闭(不处于Browse状态);
这是为何?在采用真正的服务器/客户机后还会不会有这样的问题?
 
恐怕是你的程序问题吧,贴出一部分来看看
 
procedure TForm1.InsertBtnClick(Sender: TObject);
begin
try
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('Insert into aGuest Values(:aName,:aAddr,:aTel)');
Query1.Params[0].AsString:='Racy';
Query1.Params[1].AsString:='White Sands Road';
Query1.Params[2].AsString:='98276119';
Query1.ExecSQL;
except
ShowMessage('Can not insert record!');
end;
end; //执行后会数据表会自动关闭

procedure TForm1.BitBtn2Click(Sender: TObject);
begin
try
Query1.Delete;
except
ShowMessage('Can not delete record!');
end;
end; //报错:Can not modify a read-only dataset;

我看不像是程序的问题,是不是Personal Oracle8的驱动问题?
 
1:当ExecSQL后Query.Active为False;
2: 是你的RequestLive设为True了。当RequestLive为True时只支持Local SQL.
 
对于真正的服务器/客户机,最好所有操作都使用SQL语句,让数据库去执行。
Append:
Insert into Table1 Values(:Field1,:Field2);
....

Delete:
Delete From Table1 Where ....

Post:
commit or RollBack
 
你的query1不是“insert”和“execsql”吗,怎么有关闭这个说法?

你的query1要“select”语句,然后query1.open后才能delete
 
他的意识可能是Query1.Active为False;
 
通过ODBC或BDE连接到ORACLE道理是一样的,Query和Table不是一样的.
 
这让我又想起另一个问题:用SQL语句如何删除当前记录(正在浏览的那一条记录)?
 
sql: delete from table where 关键字=当前记录的关键字数据
 
多人接受答案了。
 
后退
顶部