【发布时间】:2014-08-11 10:40:36
【问题描述】:
在 DatasnapServer 我有: TSQLConnection 连接到我的数据库。 从我的表中获取数据的 SQLDataset1 (CommandType=ctQuery)(我们称之为“RESORTS”。 DataSetProvider1 连接到我的 SQLDataset1。 DataSetProvider1 设置为 AllowCommandText。
这工作正常。服务器启动没有问题。数据已获取。
在客户端我有: SQLConnection1 连接OK。Driver 是Datasnap。 DSProviderConnection1 链接到我的 SQLConnection1。 两者连接没有问题。 然后我有连接到 ClientDataSet1 的 DataSource1。 ClientDataSet1 连接到我的 DataSetProvider1。 将其设置为活动将从服务器检索数据。 全部显示在网格中。
在客户端表单上,我有一个 Edit1 和一个 Button1。 我尝试使用 ClientDataset1 运行查询
procedure TForm2.Button1Click(Sender: TObject);
begin
ClientDataSet1.Close;
ClientDataSet1.CommandText := ' INSERT INTO RESORTS (RES_NAME) VALUES (:RN)';
ClientDataSet1.FieldByName('RN').AsString := Edit1.Text;
ClientDataSet1.Execute;
ClientDataSet1.Open;
end;
我得到:ClientDataSet1:找不到字段“RN”。
所以,我想知道发生了什么?为什么我不能插入带参数的数据? 如果我将参数替换为: ClientDataSet1.CommandText := ' INSERT INTO RESORTS (RES_NAME) VALUES ("TRY")'; 我得到:远程错误:SQLDataSet1:游标未从查询返回。 但是,数据确实会被插入。
我在这里做错了什么?
【问题讨论】:
-
在 'ClientDataSet' 的 'CommandText' 上按 F1 并读取,它正在尝试检索数据,因此 "Cursor not returned..".