with dm.ds do begin
sqltxt:='select * from t_users where name='''+edtusername.text+'''';
close;
commandtext:=sqltxt;
open; --------------------------->查询操作成功
if recourdcount=0 then
begin
sqltxt:='';
sqltxt:='insert into T_Users values(';
sqltxt:=sqltxt+''''+edtusername.Text+''',';
sqltxt:=sqltxt+''''+encrytpwd+''',';
sqltxt:=sqltxt+grade+')';
end;
close; !!!!!!!!!!!!!!!!!-------->已经关闭了,还能操作吗?
commandtext:=sqltxt;
1: edit; --------->有这句话,错误'不能在关闭的dataset上进行该操作!'
2: insert;-------->有这句话,没有1则错误同上.
3: post; -------->注释掉1,2后,出错'ds不在edit或insert状态'
end;
sqltxt:='select * from t_users where name='''+edtusername.text+'''';
close;
commandtext:=sqltxt;
open; --------------------------->查询操作成功
if recourdcount=0 then
begin
sqltxt:='';
sqltxt:='insert into T_Users values(';
sqltxt:=sqltxt+''''+edtusername.Text+''',';
sqltxt:=sqltxt+''''+encrytpwd+''',';
sqltxt:=sqltxt+grade+')';
end;
close; !!!!!!!!!!!!!!!!!-------->已经关闭了,还能操作吗?
commandtext:=sqltxt;
1: edit; --------->有这句话,错误'不能在关闭的dataset上进行该操作!'
2: insert;-------->有这句话,没有1则错误同上.
3: post; -------->注释掉1,2后,出错'ds不在edit或insert状态'
end;
//...
commandtext:=sqltxt;
Open; //->>>>>>>>>>>>再打开吧
edit;
//...
//...
commandtext:=sqltxt;
Open; //->>>>>>>>>>>>再打开吧
edit;
//...
sqltxt:='';之前
注意,如果使用“DELETE、INSERT、UPDATE”,请使用TADOCommand或者TAdoQuery组件,推荐用TAdoQuery,方法如下://使用TAdoCommand,不返回数据
function RunSqlCmd(ssql: String): String;
begin
If Not(AdoC.Connected) then OpenAdoC;
AdoCmd.Connection := AdoC;
AdoCmd.CommandType := cmdText;
AdoCmd.CommandText := ssql;
TRY
BEGIN
AdoCmd.Execute;
Result := '';
END;
EXCEPT
Result := '执行SQL语句出现错误:'+#13+#13+ssql;
END;
end;
//使用TAdoQuery,可以返回数据
function TDataCenter.RunSqlQry(ssql: String):TAdoQuery;
begin
If Not(AdoC.Connected) then OpenAdoC;
AdoQry.Connection := AdoC;
AdoQry.Close;
AdoQry.SQL.Clear;
AdoQry.SQL.Add(ssql);
TRY
BEGIN
AdoQry.Open;
Result := AdoQry;
END;
EXCEPT
Result := nil;
END;
end;记得付值给.CommandText之前先调用.Close;付值后调用.open方法