最近使用Delphi,大的问题没有,但小的问题不断?
如:
程序中用到一个文本框edtSQL用来接受用户输入sql语句用户输入下面的语句会出现loginName没有默认值的错误?
//该语句为用户输入edtSQl文本框的SQL语句
select Email from test where loginName='zqget';或select Email from test where loginName="zqget"
ADODataSet1.CommandText:=edtSQL.Text;
ADODataSet1.Open;因为我的目的是让用户自己输入SQL语句,程序直接执行用户输入的SQL语句,请问该如果解决这个问题?如果实在C++中就不会出现这个问题,在这点上我一点都不喜欢delphi?
如:
程序中用到一个文本框edtSQL用来接受用户输入sql语句用户输入下面的语句会出现loginName没有默认值的错误?
//该语句为用户输入edtSQl文本框的SQL语句
select Email from test where loginName='zqget';或select Email from test where loginName="zqget"
ADODataSet1.CommandText:=edtSQL.Text;
ADODataSet1.Open;因为我的目的是让用户自己输入SQL语句,程序直接执行用户输入的SQL语句,请问该如果解决这个问题?如果实在C++中就不会出现这个问题,在这点上我一点都不喜欢delphi?
解决方案 »
- 有谁见过这个问题吗?我碰到过两次了
- DXDBGRID选择多条记录删除的问题
- 是不是在窗体的showmodal后,以后代码会等窗体关闭后才执行
- 在MDI窗体,客户区始终有一个框框,如何将客户区的3D效果去掉(另有200分相送)
- 哥哥,姐姐帮帮我!
- 数据库问题??急用??
- 关于SQL日期的几个小问题,分数全给第一个解决问题的朋友。
- 如何运行 '%ProgramFiles%\Outlook Express\msimn.exe'
- Stringgrid总是默认给第1行第1列加上深蓝色,能不能去掉,都是白色?
- 指定一个窗体的父窗体!!!!
- 用什麽函數清除時間控件裏面日期?
- ServerSocket怎样维护很多连接的客户端(ClientSocket)。
试试。
“或', 替换为双单引号('')就可以了
select Email from test where loginName=''zqget''
处理一下where 子句中条件是字符串的就行了
用上面的语句试试。
Edit1是用户输入SQL语句的地方。
QuotedStr函数很好的处理了SQL语句中的引号问题!!
begin
close;
sql.clear;
sql.add('select email from test where loginName=''zqget''');
open;
end;这样看看可以吗?
try
with Query1 do
begin
close;
SQL.Add(Memo1.Text);
Prepare;
Open;
end;
except
showmessage('the SQL statement is wrong');
end;
“或', 替换为双单引号('')就可以了
或者:
用把所有出现双引号"和单引号'的地方,替换成\"或\'.另外,如果涉及到有数据库表中字段使用了关键词,可能要求加[]号.
这个sql语句的查询条件是可以千变万化的所以如果单让用户输入loginName则就不满足要求,我的要求其实就是要求我的程序能够执行
用户所输入的 "SQL语句"
ADOQuery1.Close;
ADOQuery1.SQL.Text := edtSQL.Text;
ADOQuery1.Open;
开始我是用的ADODataSet组件
我换成ADOQuery组件还是一样的错误参数"loginName"没有默认参数