下面是我写的代码:
procedure TForm1.Button1Click(Sender: TObject);
begin
      //创建连接字符串
     F_Connection := TADOConnection.Create(nil);
     with F_Connection do
     begin
        if Connected then Connected := false;
        ConnectionString:='Provider=SQLOLEDB.1;Password=sa;Persist Security Info=False;User ID=sa;Initial Catalog=LZH_Test;Data Source=LIUZHIHUA';
        CommandTimeout := 10;
        LoginPrompt := false;
        Open;
     end;     F_Query := TADOQuery.Create(nil);
     with F_Query do
     begin
        SQL.Clear();
        if Active then close();
        Connection:= F_Connection;
        
        SQL.Add('select * from UserLogin where (UName:=name) and (UPwd := pwd)');
        //调试到这里的时候,就报错了,然后我想在SQL语句中直接赋值,也不行,那个值就算我给的   是string类型,但他在数据库中执行的时候,给我自己转换成列名了...也报错
        Parameters.ParamByName('name').Value:=edit1.Text;
        Parameters.ParamByName('pwd').Value:=edit2.Text;
        

        Open;
     end;
end;
谁能告诉我这是为什么呢?

解决方案 »

  1.   

    SQL.Add('select * from UserLogin where (UName=:name) and (UPwd = :pwd)');
      

  2.   

    先在設計階段加入連接及查詢部件,調試好SQL等後,再用動態建立的方法。建議連接部件還是用靜態建立好。
      

  3.   

    嗯嗯,我开始是这样写的他也报错后面这个工具直接卡死,重启一下代码又还原了...好悲剧的现在好了吧?
    好了,那个已经可以了,不过我现在又遇到了一个问题:
    {添加}
    procedure TForm3.Button1Click(Sender: TObject);
    begin
          F_Connection := TADOConnection.Create(nil);
          with F_Connection do
          begin
             if Connected then Connected := false;
             ConnectionString:='Provider=SQLOLEDB.1;Password=sa;Persist Security Info=False;User ID=sa;Initial Catalog=LZH_Test;Data Source=LIUZHIHUA';
             Open;
          end;      F_Query := TADOQuery.Create(nil);
          with F_Query do
          begin
             SQL.Clear();
             Connection := F_Connection;
             
             SQL.Add('insert into UserLogin (UName,UPwd) values(:name,:pwd)');
             
             
             Parameters.ParamByName('name').Value :=  edit1.Text;
             Parameters.ParamByName('pwd').Value := edit2.Text;
             Open;
          end;
          ShowMessage('OK');
    end;
    这个地方我不知道该怎么弄这个参数,然后这个添加语句返回的结果,我不知道怎么接收...还得麻烦一下,谢谢!
      

  4.   

          with F_Query do
          begin
             SQL.Clear();
             Connection := F_Connection;
             
             SQL.Add('insert into UserLogin (UName,UPwd) values(:name,:pwd)');
                      
             Parameters.ParamByName('name').Value :=  edit1.Text;
             Parameters.ParamByName('pwd').Value := edit2.Text;
             ExecSQL;//Open;这里改为ExecSQL,你还想要返回什么结果?
          end;
      

  5.   

    哈哈,
    后面这个不是用Open,用ExecSQL;
    要返回数据的用Open,比如Select查询
    增加、删除、修改数据什么的用ExecSQL,比如Insert into,delete
      

  6.   

    比如说:我添加成功了,那么他这条SQL语句应该会返回1或者0吧...那我用什么对象在哪里接收呢?
      

  7.   

    嗯嗯,我开始是这样写的他也报错后面这个工具直接卡死,重启一下代码又还原了...好悲剧的现在好了吧?
    好了,那个已经可以了,不过我现在又遇到了一个问题:
    {添加}
    procedure TForm3.Button1Click(Sender: TObject);
    begin
          F_Connection := TADOConnection.Create(nil);
          with F_Connection do
          begin
             if Connected then Connected := false;
             ConnectionString:='Provider=SQLOLEDB.1;Password=sa;Persist Security Info=False;User ID=sa;Initial Catalog=LZH_Test;Data Source=LIUZHIHUA';
             Open;
          end;      F_Query := TADOQuery.Create(nil);
          with F_Query do
          begin
             SQL.Clear();
             Connection := F_Connection;
             
             SQL.Add('insert into UserLogin (UName,UPwd) values(:name,:pwd)');
             
             
             Parameters.ParamByName('name').Value :=  edit1.Text;
             Parameters.ParamByName('pwd').Value := edit2.Text;
             Open;
          end;
          ShowMessage('OK');
    end;
    这个地方我不知道该怎么弄这个参数,然后这个添加语句返回的结果,我不知道怎么接收...还得麻烦一下,谢谢!
    还有这个地方这样能行吗?         SQL.Add('insert into UserLogin (UName,UPwd) values(:name,:pwd)');
             
     
      

  8.   

    嗯嗯,我开始是这样写的他也报错后面这个工具直接卡死,重启一下代码又还原了...好悲剧的现在好了吧?
    好了,那个已经可以了,不过我现在又遇到了一个问题:
    {添加}
    procedure TForm3.Button1Click(Sender: TObject);
    begin
    end;
    这个地方我不知道该怎么弄这个参数,然后这个添加语句返回的结果,我不知道怎么接收...还得麻烦一下,谢谢!
    还有这个地方这样能行吗?         SQL.Add('insert into UserLogin (UName,UPwd) values(:name,:pwd)');
             
     可以的。ExecSQL有返回值,但不晓得可不可以,你可以测试下。
      

  9.   

    嗯嗯,我开始是这样写的他也报错后面这个工具直接卡死,重启一下代码又还原了...好悲剧的现在好了吧?
    好了,那个已经可以了,不过我现在又遇到了一个问题:
    {添加}
    procedure TForm3.Button1Click(Sender: TObject);
    begin
    end;
    这个地方我不知道该怎么弄这个参数,然后这个添加语句返回的结果,我不知道怎么接收...还得麻烦一下,谢谢!
    还有这个地方这样能行吗?         SQL.Add('insert into UserLogin (UName,UPwd) values(:name,:pwd)');
             
     可以的。ExecSQL有返回值,但不晓得可不可以,你可以测试下。
    好的,非常感谢!