请帮看看是不是我的语法不正确(十万火急)(50分)

  • 主题发起人 主题发起人 bill_max
  • 开始时间 开始时间
B

bill_max

Unregistered / Unconfirmed
GUEST, unregistred user!
运行时出现parameter XXX has no default value,程序如下:

if maskEdit1.Text <> '' then begin
MainForm.Query1.sql.Add('Insert into 用户 Values (''' + Edit1.Text + ''','+ pasWord+')');//原来为.Add('Insert into 用户 Values (''' + Edit1.Text + ''',1)');时可通过

MainForm.UserView.Items.Add(nil,Edit1.Text);
end
else begin
MainForm.query1.SQL.add('Insert into 用户 Values (''' + Edit1.Text + ''','+''+')');//原来为.add('Insert into 用户 Values (''' + Edit1.Text + ''',0)');时可通过

MainForm.UserView.Items.Add(nil,Edit1.Text) ;
MainForm.Userview.Refresh;
end;

数据表中对应的pasWord的属性已设为字节
 
你在往userview中增加item之前,显示一下mainform.query1.sql.text,
此时应该可以看出问题所在。
如果还不行的话,将sql.text在数据库的集成环境下试运行一下,这样问题就应该显示出来
了。
 
我认为应该是sql语句的问题吧,
因为像上面所提到的,原来用0或1就可以,换成了变量pasWord就不得了
 
后一个字段如果是MainForm.query1.SQL.add('Insert into 用户 Values (''' + Edit1.Text + ''','+''+')');
则会出现:Insert into 用户 Value('aa',);的情况,第二个字段没有填入值(括号中的,号后面,这样在SQL语法上是不行的。)
必须Insert into 用户 Value('aa',0)或Insert into 用户 Value('aa',1)
 
那第一个语句呢?
 
建议这样使用可变参数:
MainForm.Query1.sql.Add('Insert into 用户 Values (var_name,var_pass);
MainForm.Query1.ParamByName('var_name').AsString := Edit1.Text;
MainForm.Query1.ParamByName('var_pass').AsString := pasWord;
因为如果pasWord中有单引号的时候,会造成sql语句的错误。
 
sorry ,有笔误。第一行应该如下:

MainForm.Query1.sql.Add('Insert into 用户 Values (:var_name,:var_pass)');

sql语句中的变量名前要加冒号(:)
 
多人接受答案了。
 
后退
顶部