执行memo中输入的SQL语言(100分)

  • 主题发起人 主题发起人 zxyfd2000
  • 开始时间 开始时间
Z

zxyfd2000

Unregistered / Unconfirmed
GUEST, unregistred user!
我做了一数据库,用户可以输入SQL进行查询,SQL语句在memo中输入.
因权限问题,用户只能查询,不能执行其他操作(插入,修改...).
我的做法:初始化memo语句:select * from use.db
我的意思是初始化语句用户不能修改,只能接着上述语句添加
如何做?
 
如果只是让这一句不被修改的话,试试在Memo的OnKeyDown里——
procedure TForm1.Memo1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
var
Pos: Integer;
begin
Pos := Length('select * from use.db');
Memo1.ReadOnly := Memo1.SelStart < Pos + 1;
if (Key = VK_RETURN) and (Memo1.SelStart = Pos) then
Memo1.ReadOnly := False;//稍微调整一下,使得用户可以在第二行插入语句
end;
 
在执行前判断一下,第一句是不是“select * from ...”
如果第一句是不变的,干脆用个label放在memo上面吧
 
输入完后在TEXT里找找UPDATE,DELETE,如果有报不能执行不就行了?
if Pos('update ',Memo1.text) > 0 then
showmessage('哦,你想干吗?你不能改啊!');
 
做一个Table的选择界面,再做一个字段选择界面,最后由代码拼出你要的 SQL 语句。
 
同意liuly的看法,采用控件叠加,程序运行时再分别SQL.ADD字符串给QUERY执行。
 
只需要输入内容语句动作语句自己添加。
 
用户可能对SQL语法并不很了解,你不如将可能要查询的几个字段单列成几个TEDIT,然后
再与“初始化memo语句:select * from use.db”组合,用TMEMO,可能不太合适你觉得怎样?
 
多人接受答案了。
 
后退
顶部